С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 1
Регистрация: 12.03.2018
Сообщений: 331

Перезапись файла php

06.02.2020, 01:40. Показов 1976. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Загружаю файл и переименовываю его в рандомное имя, но если обновить страницу с формой, то тот же файл отправляется но уже с другим названием... Как это исправить?

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
function load_file() {
// Перезапишем переменные для удобства
  $fileName  = $_FILES['product_file']['name'];
$filePath  = $_FILES['product_file']['tmp_name'];
$errorCode = $_FILES['product_file']['error'];
$error = false;
 
// Проверим на ошибки
if ($errorCode !== UPLOAD_ERR_OK || !is_uploaded_file($filePath) || $error === true) {
 
    // Массив с названиями ошибок
    $errorMessages = [
        UPLOAD_ERR_INI_SIZE   => 'Размер файла превысил значение upload_max_filesize в конфигурации PHP.',
        UPLOAD_ERR_FORM_SIZE  => 'Размер загружаемого файла превысил значение MAX_FILE_SIZE в HTML-форме.',
        UPLOAD_ERR_PARTIAL    => 'Загружаемый файл был получен только частично.',
        UPLOAD_ERR_NO_FILE    => 'Файл не был загружен.',
        UPLOAD_ERR_NO_TMP_DIR => 'Отсутствует временная папка.',
        UPLOAD_ERR_CANT_WRITE => 'Не удалось записать файл на диск.',
        UPLOAD_ERR_EXTENSION  => 'PHP-расширение остановило загрузку файла.',
    ];
 
    // Зададим неизвестную ошибку
    $unknownMessage = 'При загрузке файла произошла неизвестная ошибка.';
    // Если в массиве нет кода ошибки, скажем, что ошибка неизвестна
    $outputMessage = isset($errorMessages[$errorCode]) ? $errorMessages[$errorCode] : $unknownMessage;
 
    // Выведем название ошибки
    echo $outputMessage;
            $_FILES = null;
        $_POST = null;
        $error = true;
}
 
// Создадим ресурс FileInfo
$fi = finfo_open(FILEINFO_MIME_TYPE);
 
// Получим MIME-тип
$mime = (string) finfo_file($fi, $filePath);
// Закроем ресурс
finfo_close($fi);
 
// Проверим ключевое слово image (image/jpeg, image/png и т. д.)
if (($mime === 'application/x-rar-compressed' || $mime === 'application/zip' || $mime === 'application/x-rar' || $mime === 'application/zip') === false) { echo 'Можно загружать только архивы zip и rar.';
            $_FILES = null;
        $_POST = null;
        $error = true;
}
 
// Зададим ограничения для архива
$limitBytes  = 100000000;
 
// Проверим нужные параметры
if (filesize($filePath) > $limitBytes) {echo 'Размер архива не должен превышать 100000кб.'; $_FILES = null; $_POST = null; $error = true;}
 
// Сгенерируем новое имя файла на основе MD5-хеша
$rand = rand();
$FileType = strtolower(pathinfo($fileName,PATHINFO_EXTENSION));
// Переместим картинку с новым именем и расширением в папку /img
if ($error) {
    $_FILES = null;
    $_POST = null;
    $error = true;
}else {
  move_uploaded_file($filePath, __DIR__ . '/rar-zip/' . $rand.'.'.$FileType);
}
}
?>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.02.2020, 01:40
Ответы с готовыми решениями:

Перезапись файлов на сервере php!
Всем добрый день! Может это жутко банальный вопрос, я новенький здесь, но в интернете ответа не нашел... У меня апачи сервер с php,...

Перезапись файла
Добрый день. НаписАл программку на php которая достаёт инфу с сайта и сохраняет в excel файл на локальном компьютере. Необходимо...

Перезапись файла
Всем привет. Мне нужно удалить строку (произвольную) из файла. Как я понял, единственный способ это сделать - полностью стереть...

4
Невнимательный
 Аватар для ft4l
2841 / 1275 / 358
Регистрация: 08.02.2013
Сообщений: 7,420
Записей в блоге: 2
06.02.2020, 06:38
Как вариант - два варианта ) с сессиями и перенаправлением
Запретить повторную отправку POST запроса при обновлении страницы если понял о чём Вы
0
0 / 0 / 1
Регистрация: 12.03.2018
Сообщений: 331
06.02.2020, 12:42  [ТС]
Ну это тоже хорошая информация, просто человек может загружать один и тот же файл много раз, но с разным названием. Вот как такого можно избежать?
0
Невнимательный
 Аватар для ft4l
2841 / 1275 / 358
Регистрация: 08.02.2013
Сообщений: 7,420
Записей в блоге: 2
06.02.2020, 13:20
Цитата Сообщение от koks_ikkkk Посмотреть сообщение
один и тот же файл много раз
На стороне сервера видно только имя файла, ... обычно.
Как бы если хранить ещё где-то список всего загружаемого так-себе вариант,
Потому что файлы с одинаковым именем, не обязательно могут быть одним файлом,
и даже может измениться содержимое одного и того-же файла, я так думаю...

Остаются наверное только варианты с хранением на сервере чего-то такого ))
вместе с именем файла
Пример #1 Использование hash_file()
PHP
1
2
3
4
5
6
<?php
/* Создаем файл, чтобы вычислить его хеш */
file_put_contents('example.txt', 'Наглый коричневый лисёнок прыгает вокруг ленивой собаки.');
 
echo hash_file('md5', 'example.txt');
?>
Результат выполнения данного примера:
bff8b4bc8b5c1c1d5b3211dfb21d1e76
Или сравнивать загружаемое с ранее загруженным....
Но останется возможность переименовывать файл и загружать его снова и снова
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
06.02.2020, 16:38
давно еще баловался с поисками дубликатов у себя на локалке. но капитально, с большим количеством - нет. поглядите вот здесь информацию для обработки больших количество файлов, может, пригодится:
Как определить дубликаты картинок с помощью PHP
Libpuzzle индексирует миллионы фотографий?

Добавлено через 12 минут
пример для imagick
PHP
1
2
3
4
$im1 = new Imagick('base/1.jpg');
$im2 = new Imagick('base/2.jpg'); 
$res = $im1->compareImages($im2, Imagick::METRIC_MEANSQUAREERROR);
$d = round($res[1]/1000);
если $d < 30 - то похожие
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.02.2020, 16:38
Помогаю со студенческими работами здесь

Перезапись текстового файла
Здравствуйте. Хотел на сайте сделать функцию &quot;добавить новость&quot;. Все сделал, но вот только новость не создается. Помогите пожалуйста. Вот...

перезапись из файла в другой
Здравствуйте, вопрос такой: есть txt файл в котором находятся данные, нужно все строки из файла вывести на страницу сайта и после каждой...

Перезапись файла или хранение в БД?
Суть темы в заголовке. Есть файл с массивом: $arr = array( array('key 1' =&gt; 'value 1', 'key 2' =&gt; 'value 2', 'key 3' =&gt;...

Добавление и перезапись файла с новым именем
Здравствуйте. Есть поля на странице: &lt;input type='file' name='image' value='&lt;?=$myrow;?&gt;'&gt; &lt;input type='hidden' name='del'...

pChart, передача переменной из 1-го файла php в файл php построения графика, метод include
Есть два файла: 1-й: здесь запрашивается график т.е 2-й файл, а также из 1-го нужно передать переменную $name1 во 2-й файл для построения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru