在上传到目录之前重命名图像

时间:2011-03-19 23:40:07

标签: php mysql

。我已经使用php创建了一个图像上传表单,其中图像将被上传到服务器目录文件夹和数据库中图片的名称..这样当我必须使用图像并在我的浏览器中调用它时我将只使用select语句使用id从数据库中检索图像。我还包括一个限制代码,如果用户上传具有相同名称的图像,将提示错误消息,并且该名称将不会保存在数据库中。

我想要做的是添加一个重命名功能,在保存到目录之前,图像将被重命名。任何人都可以指导我正确的方法。提前谢谢!

4 个答案:

答案 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");