在PHP中将文件名更改为uniqid

6

我想修改下面的代码,使用PHP的uniqid函数接受一个随机生成的唯一ID来替换名称。我已尝试了几种方法但都没有成功。

 move_uploaded_file($_FILES["file"]["tmp_name"],
 "upload/" . $_FILES["file"]["name"]);
 $ipath = "upload/";
 $ipath .= $_FILES["file"]["name"];

有人知道我怎么做才能实现这个吗?

编辑:我的问题在于想知道将uniqid函数放在哪里,以便文件以uniqid.extension的格式存储在我的服务器文件夹中。


你的问题是关于如何生成唯一的文件名,还是关于在 move_uploaded_file 调用中放置它的位置? - bfavaretto
我正在询问在哪里放置uniqid函数。 - user981053
好的,@Connun 给了你答案。 - bfavaretto
@user981053 其实,我不太明白这里的问题在哪里... 我已经尝试了几种方法,但都没有成功。毕竟,这只是获取文件扩展名和简单的字符串连接。 - Constantin Groß
3个回答

11
move_uploaded_file($_FILES["file"]["tmp_name"],
    "upload/" . uniqid());

或者,如果您想保留文件扩展名:

$fileInfo = pathinfo($_FILES["file"]["name"]);

move_uploaded_file($_FILES["file"]["tmp_name"],
    "upload/" . uniqid() . '.' . $fileInfo['extension']);

\\编辑:要使用$ipath变量...

$fileInfo = pathinfo($_FILES["file"]["name"]);
$ipath = "upload/" . uniqid() . '.' . $fileInfo['extension'];
move_uploaded_file($_FILES["file"]["tmp_name"], $ipath);

编辑以使用实际文件名而非临时文件名来检索文件扩展名。 - Constantin Groß
你知道我怎么样才能将ipath设置为新文件名吗? - user981053

1
$newName = md5_file($ipath);

将生成文件内容的md5,应该是非常独特的。


-2
$aaa = uniqid();
$Image_New_Name = $aaa."_".basename($_FILES["fileToUpload"]["name"] );
$target_dir = "upload/".$Image_New_Name;

if(isset($_POST['submit'])) {

    //$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"] ); 

    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_dir )) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]) ." has been uploaded.";
        echo "<br/>";
    }

    $id       = $_POST['id'];
    $fullname = $_POST['fullname'];
    $password = $_POST['password'];
    $email    = $_POST['email'];
    $gender   = $_POST['gender'];
    $about_me = $_POST['about_me'];
    $state    = $_POST['state'];
    $country  = $_POST['country'];


    if($_FILES["fileToUpload"]["name"] != "") {
        $image = $_FILES["fileToUpload"]["name"];
    } else {
        $image='BlankFaceGraphic.jpg';
    }

    $sql="insert into register(id,fullname,password,email,gender,about_me,state,country,image)
                        values
  ('$id','$fullname','$password','$email','$gender','$about_me','$state','$country','$Image_New_Name')";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接