上传的文件总是被覆盖

时间:2014-11-06 22:50:17

标签: php file-upload

我有这个PHP代码,可以将iPhone上的照片上传到此目录中。我遇到的问题是,每次上传照片时都会覆盖上一张照片。如何获取所有图像?

<?php
$name = "image";
$path = "uploaded/".$name.".jpg";
$output = "{\"response\":\"false\"}";   
if(move_uploaded_file($_FILES['image']['tmp_name'], $path)) {
     $output = "{\"response\":\"true\"}";
}
echo $output;
?>

2 个答案:

答案 0 :(得分:1)

每次上传文件时,都会将其移动到同名目录。

你可以做很多事情,这是最简单的事情。

// produces something like image-1415317895-545c0987ce42c5
$name = "image-" . uniqid(time() . "-");

您还应该考虑验证上传的文件确实是图像。

$info = getimagesize($_FILES['image']['tmp_name']); 

if (is_array($info) && array_key_exists('mime', $info) && $info['mime'] === 'image/jpeg') {
    move_uploaded_file($_FILES['image']['tmp_name'], $path);
}

资源:

uniqid()
time()
getimagesize()

答案 1 :(得分:-1)

他们被重写,因为他们的名字相同。

为了解决这个问题,我们必须让每个名字都独一无二,我认为最好的方法就是这样:

$name = "image_" . sha1 (openssl_random_pseudo_bytes (100));

这样您就可以确定名称是唯一的。

如果没有安装OpenSSL,那么mt_random ()是一个很好的选择。

$name = "image_" . sha1 (mt_random (0, 1000000));