我正在将图片上传到文件夹名称“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')"); }
答案 0 :(得分:1)
一些错误
pathinfo
而不是path_info
d-m-Y
使用h.i.s
等有效文件名作为文件示例:
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“/” - 但不推荐。