Добавление случайного числа в загруженный файл в переполнении стека

У меня есть мой 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

Решение

Имя файла в вашем примере php и ваше расширение tmp, Ни у кого из них нет . что вам не хватает

Вам нужно добавить точку . в виде строки после $file_name а также $rand, перед $extension как это:

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

Другие решения

ВРЕМЯ всегда уникальная личность, используйте ее как показано ниже (может быть полезно):

             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);
0

Вам нужно добавить нужные символы в строку.

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

Но я должен сказать, что я против того, как вы это сделали, вы даже не проверяете, существует ли «вновь созданная» строка в каталоге. Лучше хешировать время загрузки с исходным именем файла, переименовывать файл в новый хэш и использовать базу данных, чтобы указать на файл, так как таким образом не происходит столкновения имени файла.

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

$file->move($path, $fn);
0
По вопросам рекламы [email protected]