Mike CJ Ответов: 1

Как я могу сделать загрузку файла с новым именем файла?


Привет. У меня есть проблема, и поэтому я хочу что-то сделать, когда пользователь добавляет новую картинку, тогда его имя изменится на строку уникальных чисел. Написав код, который я хотел написать на сервере, скажем (пользователь загружает photo.jpg и он пишет на сервере) и теперь я хотел бы это сделать. (Пользователь загружает image.jpg, сервер переименован в 102399_2.jpg (что-то в этом роде) и сохраняет его в каталоге и в базе данных).
 
С помощью этого кода я использовал
$target_dir = "photos/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file))


Что я уже пробовал:

Со сменой
$target_file

1 Ответов

Рейтинг:
10

OriginalGriff

Проблема с "строкой уникальных чисел" заключается в их генерации, чтобы они не повторялись - случайные числа не гарантируют этого (по моему опыту, они, кажется, положительно гарантируют, что они действительно повторяются...)

Однако решение есть: GUIDs.
Взгляните на это: РНР: com_create_guid-руководство пользователя[^] он генерирует строку, которая вряд ли вообще повторится. Я использую их для хранения файлов, с записью в БД, которая преобразует их обратно в имя файла и пользователя, который его загрузил, что позволяет нескольким пользователям с одним и тем же именем файла, но разным содержимым.


Mike CJ

У меня к вам вопрос. Как я могу использовать этот код
<? php

функция GUID()
{
если (function_exists('com_create_guid') === правда)
{
возврат накладка(com_create_guid(), '{}');
}

return sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));
}

?>

Mike CJ

Как я могу добавить файл формата с использованием GUID ?

OriginalGriff

Вы сохраняете файл на диске, используя GUID в качестве имени файла.
Затем вы сохраняете исходное имя файла, пользователя и GUID в своей БД, чтобы получить их позже.

Mike CJ

Могу ли я сделать так, чтобы изменить только имя без формата файла?

OriginalGriff

Имена файлов не управляют форматом: он управляется содержимым файла.

Mike CJ

Окей. Работающий. Спасибо за любую помощь.