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