如何在获取变量的当前时间和日期后设置jpeg扩展名?

时间:2012-10-09 12:09:03

标签: php image-uploading

我正在将图片上传到文件夹名称“upload”。然后我正在更改图像的名称和扩展名。我正在使用默认时区获取当前时间和日期 现在我试图在我获得的日期和时间之后将图像扩展名设置为“jpeg” 试过但没有给出结果我把我的代码放在这里

我想当我上传图像时,我的文件名是“NEWYORK.JPG”但是之后 上传图片我想更改文件名是“9/10/2012/05:31:15.jpeg” 获取当前时间和日期设置的默认时区。

  

date_default_timezone_set('Asia/Kolkata');
$imagename = date('d/m/Y-h:i:s', time());
$imagename=basename($imagename,".jpg");
echo $filename = $imagename;
$upload   = $_FILES['ctgimage'];
$target_path = "upload/";

 echo $target_path .= $filename . "." . path_info($upload["name"], PATHINFO_EXTENSION);
  if(move_uploaded_file($upload["tmp_name"],$target_path))
  {
          echo "uploaded successfully";           $cname=$_POST['ctgname'];
          mysql_query("insert into category(ctg_name,ctgimage) 
               values('$cname','$target_path')");

  }

4 个答案:

答案 0 :(得分:1)

一些错误

  • 应该是pathinfo而不是path_info
  • 对文件夹d-m-Y使用h.i.s等有效文件名作为文件
  • 复制次数太多
  • 通过转义避免SQL注入

示例:

date_default_timezone_set('Asia/Kolkata');

$target_path = "upload/";
$imageDir = date('d-m-Y', time());
$imageName = date('h.i.s', time());

$upload = $_FILES['ctgimage'];
$uploadExtention = pathinfo($upload["name"], PATHINFO_EXTENSION);

if (! is_dir($target_path . "/" . $imageDir)) {
    mkdir($target_path . "/" . $imageDir);
}

$target_path = "$target_path/$imageDir/$imageName.$uploadExtention";
$cname = mysql_real_escape_string($_POST['ctgname']);

if (move_uploaded_file($upload["tmp_name"], $target_path)) {
    echo "uploaded successfully";

    mysql_query("insert into category(ctg_name,ctgimage)
    values('$cname','$target_path')");
}

mysql_*****上的PHP DOC

  

不鼓励使用此扩展程序。相反,应该使用MySQLi或PDO_MySQL扩展。另请参阅MySQL:选择API指南和相关的常见问题解答以获取更多信息。该功能的替代方案包括:

答案 1 :(得分:0)

我建议您使用UNIX时间戳命名文件,而不是日期。 此外,我不确定操作系统允许文件名包含像“/”

这样的字符

答案 2 :(得分:0)

我认为您无法命名文件9/10/2012/05:31:15.jpeg,因为当您尝试保存时,PHP会将斜杠解释为文件夹目录。

如果我错了,请纠正我。

答案 3 :(得分:0)

目标目录必须存在。

也;仅作为建议:使用Y / m / d / ...使文件夹结构更好,以排序/遍历/保持顺序。

├── 2011
│   └── 12
│       ├── 03/
│       ├── 07/
│       ├── 13/
│       ├── 16/
│       └── 24/
└── 2012
    ├── 02
    │   ├── 14/
    │   └── 20/
    └── 05
        └── 13/

和/或。即

2012-03-11_13.26.13.jpeg  
2012-03-11_14.26.13.jpeg  
2012-07-14_13.26.13.jpeg

而不是:

13-11-2012_13.26.13.jpeg  
14-07-2012_13.26.13.jpeg  
14-11-2012_14.26.13.jpeg

如果两个图像有相同的时间,您还需要附加一个唯一的字符串 - 否则move_uploaded_file()会覆盖目标文件(如果存在)。

同样如上所述,你不能在文件名中转发斜杠。我将其解释为文件夹结构的一部分。如果你想伪造它,你可以使用Unicode 0x206F“/” - 但不推荐。