-1

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

4

3 回答 3

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);
于 2013-03-14T01:58:34.563 回答
1

tmpfile() 将在临时目录中为您提供唯一的文件句柄 - 或 - tempnam() 将在临时目录中为您提供唯一的文件名

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

于 2013-03-14T01:48:45.573 回答
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 将在临时位置生成文件,因此不会重复。

于 2013-03-14T01:57:39.350 回答