我目前正在制作一个简单的上传脚本。
但是,我的用户从iPhone上传图像时遇到问题,因为iPhone将所有图像命名为“image.jpg”,并且您不能拥有两个同名图像。
有没有办法在下面的上传过程中为文件名添加随机字符串?我是PHP的新手!
$allowedExts = array("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"))
&& ($_FILES["file"]["size"] < 3000000000)
&& in_array($extension, $allowedExts)) {
if ($_FILES["file"]["error"] > 0) {
} else {
if (file_exists("../../upload/" . $_FILES["file"]["name"])) {
} else {
move_uploaded_file($_FILES["file"]["tmp_name"],
"../../upload/" . $_FILES["file"]["name"]);
$image_link = 'http://www.martahedin.com/EveryLife/upload/' . $_FILES["file"]["name"];
echo $image_link;
}
}
} else {
echo "Invalid file";
}
答案 0 :(得分:0)
在此行指定服务器端文件名:
move_uploaded_file($_FILES["file"]["tmp_name"],
"../../upload/" . $_FILES["file"]["name"]);
如果要为该文件名添加唯一字符串,可以将其添加到该行。例如,一个选项可能只是在现有文件名前加上一个唯一的字符串:
move_uploaded_file($_FILES["file"]["tmp_name"],
"../../upload/" . uniqid() . $_FILES["file"]["name"]);
答案 1 :(得分:0)
这是您修改的代码,以执行您的操作。将$ destination变量更改为您想要的任何格式。将$ uniquevalue更改为您希望用于唯一性的任何内容。
$allowedExts = array("gif", "jpeg", "jpg", "png");
// Get the file extension
$extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
// Get the file name without the extension
$filename = basename($_FILES["file"]["name"], ".$extension");
// Define your unique identifier - this example uses unix timestamp
$uniquevalue = time();
// Combine the above parts in the form you wish
$destination = $filename . '-' . $uniquevalue . '.' . $extension;
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"))
&& ($_FILES["file"]["size"] < 3000000000)
&& in_array($extension, $allowedExts)) {
if ($_FILES["file"]["error"] > 0) {
} else {
if (file_exists("../../upload/" . $_FILES["file"]["name"])) {
} else {
// Changed $_FILES["file"]["name"] to $destination
move_uploaded_file($_FILES["file"]["tmp_name"],
"../../upload/" . $destination);
$image_link = 'http://www.martahedin.com/EveryLife/upload/' . $destination;
echo $image_link;
}
}
} else {
echo "Invalid file";
}
答案 2 :(得分:0)
您可以更改此部分代码
move_uploaded_file($_FILES["file"]["tmp_name"], "../../upload/" . $_FILES["file"]["name"]);
通过
move_uploaded_file($_FILES["file"]["tmp_name"], "../../upload/" . uniqid() . "_" . $_FILES["file"]["name"]);
希望有所帮助
答案 3 :(得分:-1)
如果您只想拥有不同的文件名,请尝试: 兰特(0,9999)
像这样: move_uploaded_file($_FILES["file"]["tmp_name"],
"../../upload/" .rand(0,99999). $_FILES["file"]["name"]);
更新:
$newName = rand(0,99999). $_FILES["file"]["name"];
move_uploaded_file($_FILES["file"]["tmp_name"],
"../../upload/" . $newName);
$image_link = 'http://www.martahedin.com/EveryLife/upload/' . $newName;
echo $image_link;