【发布时间】:2018-05-18 18:31:53
【问题描述】:
所以我正在尝试使用下面的脚本将一些图像上传到我的服务器上的文件夹,但是它将每个图像保存为“image.jpg”,如果我尝试上传多个图像,它会覆盖最后上传的图像。正如你可以看到我评论了检查文件是否已经存在的部分,让我上传文件并覆盖最新的文件。帮助!我需要修改一些东西来随机化名称或获取原始图像名称。
<?php
$target_dir = "wp/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
// Check if file already exists
/*if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}*/
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "png" && $imageFileType != "jpg") {
echo "Sorry, only PNG and JPG files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
【问题讨论】:
-
问题是
$target_file这被 $_FILES["fileToUpload"]["name"] 填充。试试 var_dump(`$_FILES["fileToUpload"]["name"])。文件作为文件数组发送。这将使您知道名称存储在数组中。应该为您指明解决方案的方向。 -
要随机化您上传的名称,您可以使用 time() 将当前日期附加到名称后面(以毫秒为单位),这样每次使用相同名称的更新都不会发生冲突,并且上传无需覆盖现有文件。
标签: php html file-upload