在PHP中为上传的文件添加随机数

时间:2016-11-15 10:51:51

标签: php file upload filenames

我的上传php代码我的目的是,从$_files获取文件, 将0到9999之间的随机数添加到图像名称中,如下所示:

image sent:image.jpg
before saving:image321.jpg

图像保存在我的上传文件夹中,但文件名如下 的 “php2983204tmp”

if ($file !== null) {
    $rand = rand(0000,9999);
    $path = "some_path";

    $file_name = $file->getClientOriginalName(); // file
    $extension = $file->getClientOriginalExtension(); // jpg

    $file->move($path, $file_name.$rand.$extension);

    $response = "File loaded successfully: " . $file_name.$extension;
    $response .= '<br>size: ' . filesize($path . '/' . $file->getClientOriginalName()) / 1024 . ' kb';

    return new Response($response);

要修复哪些想法?

3 个答案:

答案 0 :(得分:1)

示例中的文件名为php,您的扩展名为tmp。他们都没有你遗失的.

您需要在.$file_name之后,在$rand之前添加点$extension作为字符串:

$file->move($path, $file_name.$rand. "." .$extension);

答案 1 :(得分:0)

您需要在实际字符串中添加所需的字符。

$file->move($path, $file_name.$rand.".".$extension);

但我不得不说,我反对你是如何做到这一点的,你甚至不检查目录中是否存在“新”创建的字符串。最好使用原始文件名散列上传时间,将文件重命名为新散列并使用数据库指向文件,因为文件夹冲突不会发生。

$fn = md5(microtime(true) . $extension  . $file_name);

$file->move($path, $fn);

答案 2 :(得分:0)

TIME 始终是唯一身份,请按以下方式使用(可能有帮助):

             if ($file !== null) {
                $rand = rand(0000,9999).time();
                $path = "some_path";
                $file_name = $file->getClientOriginalName(); // file
                $extension = $file->getClientOriginalExtension(); // jpg
                $file->move($path, $file_name.$rand.$extension);
                $response = "File loaded successfully: " . $file_name.$extension;
                $response .= '<br>size: ' . filesize($path . '/' . $file->getClientOriginalName()) / 1024 . ' kb';
            return new Response($response);