2

我正在将图像上传到文件夹名称“上传”。然后我正在更改图像的名称和扩展名。我正在使用默认时区获取当前时间和日期现在我正在尝试在获取的日期和时间之后将图像扩展名设置为“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

4 回答 4

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')");
}

PHP 文档mysql_*****

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

于 2012-10-09T12:13:42.523 回答
0

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

于 2012-10-09T12:14:38.570 回答
0

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

如果我错了,请纠正我。

于 2012-10-09T12:15:53.547 回答
0

目标目录必须存在。

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

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

和/或。IE

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 "⁄" - 但不推荐。

于 2012-10-09T12:18:09.327 回答