更改上传图片的名称

时间:2013-03-14 01:17:02

标签: php image-uploading

我正在开发一个项目,让用户登录并上传网站上的一些图片, 我使用的是php5。 我在这里有一个问题,如果2个不同的用户将2个具有相同名称的图像上传到日期库,该怎么办? 我知道我必须在他们到达数据库时重命名它们,我想我可以使用当前时间值来做到这一点,但我确实知道实际的代码。 如果任何人可以帮助我,我真的适合

3 个答案:

答案 0 :(得分:1)

tmpfile()将在temp目录中为您提供唯一的文件句柄  - 要么 - tempnam()将在temp目录中为您提供一个唯一的文件名

使用其中任何一个创建要保存的上传的唯一文件,然后您可以根据需要重命名。

答案 1 :(得分:1)

最适合您将图像名称发送到数据库 然后使用日期库的最后一个ID重命名图像,如下所示

  //////connect////////////////
include_once ("connect_to_mysql.php");

$file = $_FILES['image']['tmp_name'];
$albumid = $_POST['album_id'];


 $maxfilesize = 8000000;

if($_FILES['image']['size'] > $maxfilesize ) { 
        echo "<br /><br />Your image was too large. Must be 8Mb or less, please<br /><br />
        <a href=\"Profilepic.php\">click here</a> to try again";
        unlink($_FILES['uploadedfile']['tmp_name']); 
        exit();


} if (!isset($file))
 echo "Please select an Image.";
 else
 {

    // Check file size, if too large exit and tell them why

$image_name = addslashes($_FILES['image']['name']);
$image_size = getimagesize($_FILES['image']['tmp_name']);

$album_id = $_POST['album_id'];

$id = mysql_insert_id();

if ($image_size==FALSE)
echo "That's Not an Image.";
else
 {

if (!$insert = mysql_query("INSERT INTO image
 VALUES('','$userid','$image_name')"))

echo "Problem Uploading Image Try Again Please";
else{
$id = mysql_insert_id();
//////////take the last inserted id and use as image name/////////
$file = "uploads/$userid/".$id."";

move_uploaded_file($_FILES['image']['tmp_name'], $file);

答案 2 :(得分:0)

由于您只需要一个概念来制作文件而不会产生任何冲突,我希望建议以下选项。

选项1:根据需要重命名 将当前用户ID转换为变量。

$tempName = $userID . "_" . strtotime(date('Y-m-d H:i:s')) . "_" . mt_rand();

选项2:单独的位置 如果要保留用户上传的相同文件名。然后将文件存储在每个用户的单独目录中。

你可以使用这样的东西。

$dirPath = "path to the user's directory";
if(!file_exists($dirPath))
mkdir($dirPath,0777);

当你上传apache时会在temorary location生成文件,所以它不会重复。