Загруженный файл перезаписывает файл с таким же именем, помогите, пожалуйста.

  • Автор темы Влад Поляков
  • 39
  • Обновлено
  • 12, May 2024
  • #1
Сценарий загрузки, который я использую, работает успешно, но если загружается файл с тем же именем, что и файл, который уже находится в папке назначения, новый файл перезапишет существующий файл. Я ищу простое решение, чтобы исправить это, например, изменить имя загруженного файла, например:
 if (@$_POST['submit'] != "") {

$allowed_ext = array("gif", "jpeg", "jpg", "png", "pdf", "doc", "docs", "zip", "mov", "MOV", "flv", "mp4", "3gp", "3GP");

$extension = end(explode(".", $_FILES["file"]["name"]));

if (($_FILES["file"]["size"] < 10485760000) && in_array($extension, $allowed_ext)) {

if ($_FILES["file"]["error"] > 0) {

//$message.="There is some error in upload, see: " . $_FILES["file"]["error"] . "<br>";//Enable this to see actual error

$message.="There is some error in upload. Please try after some time.";

} else {

$uploaddir = '../Upload/';

$uploadfile = $uploaddir . basename($_FILES['file']['name']);

$uploaded_file = false;

if(move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile))

{

$uploaded_file = $_FILES['file']['name'];

}
Код (разметка): Вот часть текущего кода загрузки:
 $randomString = time();
Код (разметка): Любая помощь будет оценена по достоинству.

Влад Поляков


Рег
23 Dec, 2012

Тем
1

Постов
2

Баллов
12
  • 01, Jun 2024
  • #2
Можно, но если пользователю нужно знать имя файла, чтобы просмотреть его позже, вам все равно придется отправить сообщение с новым именем. Это зависит от того, понадобится ли кому-нибудь этот файл в будущем.
 

Андрей Сусов


Рег
12 Sep, 2011

Тем
1

Постов
3

Баллов
13
  • 08, Jun 2024
  • #3
Или альтернативный вариант, с проверкой существования файла: $uploadfile = $uploaddir. basename($_FILES['файл']['имя']); если(file_exists($uploadfile)){ $uploadfile = $uploaddir time().'_'.. basename($_FILES['file']['name']); }
 

FSB1


Рег
24 Jun, 2012

Тем
0

Постов
2

Баллов
2
  • 10, Jun 2024
  • #4
Обычно, если пользователю нужен доступ к файлу, этого не происходит по прямой ссылке.

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

Конечно, вы бы сохранили отправленное имя файла со счетчиком в конце или что-то в этом роде, но это, по сути, то же самое, что большинство ОС делает с автоматическим переименованием.
 

miromax1


Рег
01 Jan, 2011

Тем
1

Постов
2

Баллов
12
  • 11, Jun 2024
  • #5
Зачем выдавать ошибку пользователю? Вы можете переименовать его самостоятельно что-нибудь(1).jpg что-то(2).jpg и т.д... Кроме того, есть ли какая-то конкретная причина открыть и поймать? Я думаю, что почти во всех языках программирования сегодня есть функция проверки fileExists.
 

L.I.A


Рег
26 Sep, 2011

Тем
1

Постов
3

Баллов
13
Тем
49554
Комментарии
57426
Опыт
552966