我最近一直在学习用PHP构建图片库上传器。在将文件上传到我的uploads文件夹之前,我似乎无法弄清楚我是如何重命名文件的。有人可以帮我吗?
到目前为止我所拥有的。
if(isset($_POST['submit'])) {
$allowedExts = array("gif", "jpeg", "jpg", "png","GIF","JPEG","JPG","PNG");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& in_array($extension, $allowedExts)) {
if ($_FILES["file"]["error"] > 0) {
echo "Invalid File Type";
} else {
$target = "../upload/";
$name = addslashes($_FILES['file']["name"]);
if(file_exists('../upload/' . $name)) {
$explode = explode('.', $name);
$img = $explode[0];
$ex = $explode[1];
$i = 1;
$new = $img . '_' . $i . '.' . $ex;
while (file_exists('../upload/' . $new)) {
$i++;
$new = $img . '_' . $i . '.' . $ex;
}
// RENAME FILE HERE?
}
move_uploaded_file($_FILES["file"]["tmp_name"], $target. $_FILES["file"]["name"]);
}
} else {
echo "Error uploading image";
die();
}
}
所以在我的while循环之后我想重命名文件,然后使用move_uploaded_file()函数将其移动到我的“upload”目录中。什么是我能做到这一点的最好方法?
谢谢
答案 0 :(得分:2)
当你调用move_file_upload时,你可以简单地给新文件命名为第二个参数,我知道文档没有说明这一点,但是它有效。
move_uploaded_file($_FILES["file"]["tmp_name"], $target. $_FILES["file"]["name"]);
所以你会做类似
的事情move_uploaded_file($_FILES["file"]["tmp_name"], $target. $_FILES["file"]["name"] . "Some random string to be added to the filename");
或者,如果您想忽略之前的文件名,只需将其从第二个参数中删除即可。
move_uploaded_file($_FILES["file"]["tmp_name"], $target. "new file name here");
答案 1 :(得分:1)
为什么不同时这样做呢?
您可以在移动时重命名。只需提供新文件名作为move_uploaded_file()
的第二个参数。
move_uploaded_file($_FILES["file"]["tmp_name"], $target . $new);