我有我的上传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);
有什么建议吗?
示例中的文件名为php
,扩展名为tmp
。他们都没有你缺少的.
。
您需要在$file_name
和$rand
之后,$extension
之前添加点.
作为字符串,如下所示:
$file->move($path, $file_name.$rand. "." .$extension);
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);
您需要在实际字符串中添加所需的字符。
$file->move($path, $file_name.$rand.".".$extension);
但是我不得不说,我反对你这样做,你甚至没有检查"新"创建的字符串是否已经存在于目录中。最好使用原始文件名对上传时间进行散列,将文件重命名为新的散列,并使用数据库指向文件,这样就不会发生文件名冲突。
$fn = md5(microtime(true) . $extension . $file_name);
$file->move($path, $fn);