我的上传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);
要修复哪些想法?
答案 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);