我有上传代码
$file=$_FILES['image']['tmp_name'];
$image= addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name= addslashes($_FILES['image']['name']);
move_uploaded_file($_FILES["image"]["tmp_name"],"photo/" . $_FILES["image"]["name"]);
$location="photo/" . $_FILES["image"]["name"];
然后插入$location
sql的代码添加
问题是如何将我的图片文件名编号添加到ex:如果我上传“Picture.jpg”,如果我将再次上传和相同的文件名,文件名的输出将是图片(1)。 jpg 如果我再次使用相同的文件名上传,输出文件名将是 Picture(2).jpg 等等我希望“()”增加,如果我将上传相同的文件名。提前谢谢^^
答案 0 :(得分:1)
这可以通过循环来实现:
$info = pathinfo($_FILES['image']['name']);
$i = 0;
do {
$image_name = $info['filename'] . ($i ? "_($i)" : "") . "." . $info['extension'];
$i++;
$path = "photo/" . $image_name;
} while(file_exists($path));
move_uploaded_file($_FILES['image']['tmp_name'], $path);
您还应该清理输入文件名:
答案 1 :(得分:1)
如果您希望在上传后拥有唯一的图片名称,即使它们具有相同的名称,或者它们在循环中上传意味着多次上传。
$time = time() + sprintf("%06d",(microtime(true) - floor(microtime(true))) * 1000000);
$new_name=$image_name.'_'.$time.'.'.$extension
您可以添加具有唯一时间戳的图像名称,该时间戳每纳秒不同并生成唯一的时间戳
答案 2 :(得分:0)
此代码未经测试,但我会想到以下内容:
if (file_exists('path/to/file/image.jpg')){
$i = 1;
while (file_exists('path/to/file/image ('.$i.').jpg')){
$i++;
}
$name = 'image ('.$i.');
}
然后将图像保存到$ name。 (在某些时候会产生图像(2).jpg)
答案 3 :(得分:0)
试试这个
$path = "photo/" . $_FILES["image"]["name"];
$ext = pathinfo ($path, PATHINFO_EXTENSION );
$name = pathinfo ( $path, PATHINFO_FILENAME ] );
for($i = 0; file_exists($path); $i++){
if($i > 0){
$path = "photo/" .$name.'('.$id.').'.$ext;
}
}
echo $path;
答案 4 :(得分:0)
你能试试吗,
$name = $_FILES['image']['name'];
$pathinfo = pathinfo($name);
$FileName = $pathinfo['filename'];
$ext = $pathinfo['extension'];
$actual_image_name = $FileName.time().".".$ext;
$location="photo/".$converted_name;
if(move_uploaded_file($tmp, $location))
{
}