Php 上传的文件总是被覆盖

Php 上传的文件总是被覆盖,php,file-upload,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 = "{

我有一段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;
?>

每次上载文件时,都会将其移动到具有相同名称的同一目录中

最简单的人可以做很多事情

// 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);
}
资源:

它们被覆盖,因为它们具有相同的名称

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

$name = "image_" . sha1 (openssl_random_pseudo_bytes (100));
通过这种方式,您绝对可以确定名称是唯一的

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

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

使用sha1_文件或md5_文件作为文件名openssl并不总是安装的@当然,这并不意味着它是生成随机文件名的一种非常可靠的方法。如果有人要远离OpenSSL,那么总是允许我编辑我的答案。这很有效。非常感谢你。如果你不介意的话,我想再问你一个问题。既然文件已存储,我如何才能在浏览器中查看它们?我想创建一个非常简单的html页面,只显示照片。有什么想法吗?当我在浏览器中键入实际的php文件地址时,我得到了这个结果。{response:false}当我想让它显示其中的文件时folder@user2442173不客气。要回答这个问题,有很多细节是未知的。例如:上传的文件是否只对上传的用户可见?与他人分享?你在使用数据库吗?有用户帐户吗。。。我建议你根据witch的要求自己尝试一些事情,我对你的应用一无所知。如果你仍然有问题,问另一个问题谢谢我会问另一个问题,但你回答得太快了,我想我会问你一个完美的答案。基本上,我希望任何人都能访问该网页,查看从应用程序上传的照片。我没有使用数据库或任何花哨的东西。这个简单的PHP脚本将照片上传到文件夹中。我只需要一个html代码,将显示它们。我是一名iOS开发人员,但没有真正的PHP知识