如何在上传过程中重命名图像文件

Posted

技术标签:

【中文标题】如何在上传过程中重命名图像文件【英文标题】:How to rename an image file in uploading process 【发布时间】:2014-09-10 11:07:05 【问题描述】:

我想做的是重命名图像的文件名,然后将文件移动到上传文件夹并保存到数据库的链接。

我的问题是在我当前的代码中,文件的原始名称在移动到上传文件夹后仍然存在,即使在保存到数据库的链接时,原始图像名称仍然存在。

如何在图像文件移动到上传文件夹和链接保存到数据库之前重命名图像文件的原始名称?

例子:原名Oppa/upload/default.png

我想重命名它Oppa/upload/1.png

php代码:

<?php
include_once('../dbc/database.php');

$db = new Connection();
$db = $db->dbConnect();
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$imageLink = isset($_POST['imageLink']) ? $_POST['imageLink'] : "";

$email = isset($_POST['email']) ? $_POST['email'] : "";

$image = addslashes(file_get_contents($_FILES['imageInput']['tmp_name']));
$image_name = addslashes($_FILES['imageInput']['name']);
$image_size = getimagesize($_FILES['imageInput']['tmp_name']);

move_uploaded_file($_FILES["imageInput"]["tmp_name"], "../upload/" . $_FILES["imageInput"]["name"]);
$location = "Oppa/upload/" . $_FILES["imageInput"]["name"];


if(!empty($_POST['imageLink'])) 

        $q = "UPDATE tbl_user SET user_image = '$location' WHERE user_email= :email ";
        $query = $db->prepare($q);
        $query->bindParam(':email', $email);
        $results = $query->execute();
        echo "1";


?>

【问题讨论】:

【参考方案1】:

尝试如下:

$type = $_FILES["imageInput"]["type"];
$ext = end(explode('/', $type));
$filename = uniqid() . '.' . $ext; // you can set name here whatever you want
move_uploaded_file($_FILES["imageInput"]["tmp_name"], "../upload/" . $filename);
$location = "Oppa/upload/" . $filename;

【讨论】:

【参考方案2】:
$image_name = "my_img.jpeg";
move_uploaded_file($_FILES["imageInput"]["tmp_name"], "../upload/" . $image_name);
$location = "Oppa/upload/" . $image_name;

这将使用 image_name 变量中定义的新名称保存文件

【讨论】:

以上是关于如何在上传过程中重命名图像文件的主要内容,如果未能解决你的问题,请参考以下文章

在php中重命名文件夹中所有图像的最佳方法是啥?

在颤动中重命名文件/图像

wordpress上传过程中的文件重命名功能

WordPress:如何在上传时使用当前日期重命名图像?

文件上传不检查现有图像

在 Pandas 中重命名多个列