Как переименовать загруженный файл, чтобы он был уникальным?

У меня есть форма загрузки на сайте, которая загружает несколько файлов на сервер, а также отправляет мне электронное письмо.
Он написан на php, основной частью файла является следующее:

if (isset($_FILES) && (bool) $_FILES) {
$files = array();
$ext_error = "";
// Define allowed extensions

// blahblahblah checking

// Store attached files in uploads folder
$server_file = dirname(__FILE__) . "/uploads/" . $path_part['basename'];
move_uploaded_file($temp_name, $server_file);
array_push($files, $server_file);

В настоящее время люди загружают изображения с мобильного телефона, и часто им присваивается одно и то же имя файла: image.jpg (или что-то подобное) — так они перезаписываются.

Я хотел бы добавить счетчик для каждого имени файла (например, 1,2,3 …), чтобы они загружались и отправлялись с уникальными именами, даже если клиент отправляет их под одним и тем же именем.

Что-то вроде:

if (isset($_FILES) && (bool) $_FILES) {
$files = array();
$ext_error = "";
// Define allowed extensions

// counter= counter++;
// newFilename=oldFileName+String(counter);

// doRestStuffNewFileName();

// blahblahblah checking

// Store attached files in uploads folder
$server_file = dirname(__FILE__) . "/uploads/" . $path_part['basename'];`
`move_uploaded_file($temp_name, $server_file);`
array_push($files, $server_file);`

Как я могу изменить это как таковой в php?

ок новые комментарии:

Мне бы хотелось:

for int i=0;i<files[attached];i++;
fileName=files[i]
newFileName=filename+String(Integer(i));
uploadWithNewFileName();
writeToServerWithNewFileName();

Это текущий код PHP:

if (isset($_FILES) && (bool) $_FILES) {
$files = array();
$ext_error = "";
foreach ($_FILES as $name => $file) {
if (!$file['name'] == "") {
$file_name = $file['name'];
$size += $file['size'];
$temp_name = $file['tmp_name'];
$path_part = pathinfo($file_name);
$ext = $path_part['extension'];

// Store attached files in uploads folder
$server_file = dirname(__FILE__) . "/uploads/" . $path_part['basename'];
move_uploaded_file($temp_name, $server_file);
array_push($files, $server_file);
}
}

Почему это не работает:

if (isset($_FILES) && (bool) $_FILES) {
$files = array();
$ext_error = "";
counter =0; //My code

foreach ($_FILES as $name => $file) {
counter++; //My code
if (!$file['name'] == "") {
$file_name = $file['name'];
$size += $file['size'];
$temp_name = $file['tmp_name'];
$path_part = pathinfo($file_name) + counter; //My code
$ext = $path_part['extension'];

// Store attached files in uploads folder
$server_file = dirname(__FILE__) . "/uploads/" . $path_part['basename'];
move_uploaded_file($temp_name, $server_file);
array_push($files, $server_file);
}
}

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

По вопросам рекламы [email protected]