。我已经使用php创建了一个图像上传表单,其中图像将被上传到服务器目录文件夹和数据库中图片的名称..这样当我必须使用图像并在我的浏览器中调用它时我将只使用select语句使用id从数据库中检索图像。我还包括一个限制代码,如果用户上传具有相同名称的图像,将提示错误消息,并且该名称将不会保存在数据库中。
我想要做的是添加一个重命名功能,在保存到目录之前,图像将被重命名。任何人都可以指导我正确的方法。提前谢谢!
答案 0 :(得分:1)
我发现最简单的方法是使用time()函数在所有文件名上添加前缀。多年来一直使用它没有重写问题。
实施例:
move_uploaded_file($_FILES['name']['tmp'], time() . "_{$newfilename}");
答案 1 :(得分:0)
你需要PHP的uniqid
函数,它可以为这种目的生成唯一的id:
$imgname = uniqid("img_",true) . ".jpg";
答案 2 :(得分:0)
我经常将图像重命名为随机文件名,这是独一无二的,通常不会与其他图像名称冲突。然后,正如你所说的那样在数据库中保存随机文件名以及人性化的名称/标题(例如“我的假日图片”)。使用图像ID的简单查询将获得文件名和人性化的名称。
当您上传图片以创建唯一文件名时,请使用以下代码:
var $original_filename = 'my_image.jpg';
var $folder = '/test/images/';
var $file_extension = pathinfo($original_filename, PATHINFO_EXTENSION);
do {
$filename = substr(sha1(mt_rand().time()), 0, 10).$file_extension;
} while (is_file($folder.$filename));
// New, Unique Filename Ready
echo $filename;
或者您也可以换出创建文件名的行,并使用“uniqid”作为 fredley 建议。
答案 3 :(得分:-1)
嘿,这是一个解决方案,您可以尝试使用rename function命名后,将其发送到目录并将标识符附加到新名称
//upload_image.php
<?php
$target_dir = "user_images/";
$target_file = $target_dir . basename($_FILES["appphoto1"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["appphoto1"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
// Check if file already exists
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["appphoto1"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["appphoto1"]["tmp_name"], $target_file)) {
echo "The file ". basename( $_FILES["appphoto1"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
// database insert page
include 'upload_image.php';
$old = $_FILES['appphoto1']['name'];
$new ="appphoto$user_id";
**rename** ("user_images/$old", "user_images/$new.$imageFileType");