У меня есть мой 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);
ВРЕМЯ всегда уникальная личность, используйте ее как показано ниже (может быть полезно):
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);