удалить файл после скачивания php

удалить файл с сервера после загрузки в PHP

Я использую php для загрузки файла, и я хочу, чтобы файл автоматически удалялся с сервера после успешного завершения загрузки. Я использую этот код в PHP.

вы можете увидеть в коде после загрузки я разблокирую файл. Но если я это сделаю, поврежденный файл загружается. Потому что когда-то файл удаляется, прежде чем он полностью загрузится. Есть ли в php, чтобы знать, что клиент успешно загружает файл, тогда я могу его удалить? Любой идея будет высоко оценена.

7 ответов

нет способа узнать, когда пользователь закончил загрузку файла с PHP, я бы использовал систему очередей для удаления файла через n секунд запроса:

насколько мне известно, вы не можете использовать серверный PHP для определения того, завершена ли загрузка для клиента. Кажется ignore_user_abort() ответ на ваш вопрос (см. ниже), в противном случае вы можете просто удалить файл после определенного количества времени.

связанный / дубликат на Stackoverflow:

Проверьте хэш-код файла на сервере и на стороне клиента. Вы можете проверить хэш-код с помощью JavaScript(Как вычислить md5 хэш файла с помощью javascript) отправьте его на сервер, а затем проверьте, является ли он тем же al на сервере.

Если вы действительно загружаете (вместо загрузки, как предлагает код в ваших сообщениях), вам может быть интересно tmpfile функция, специально разработанная для создания файлов, которые будут немедленно удалены при закрытии ее дескрипторов.

Проверьте запрос, если установлен HTTP-заголовок диапазона, клиент загружает файл по частям, он хочет загрузить только небольшую часть данных сразу (например: Range: bytes=500-999). Обычно это осуществляется через веб-сервер автоматически, но в этом случае вы должны обработать его и отправить только запрашиваемого диапазона. Сохраните прогресс в сеансе и запретите доступ только в том случае, если клиент загрузил все части.

Не уверен, что он будет работать почти во всех случаях, но попробуйте sleep (10); что-то, чтобы задержать удаление файла на определенное время.

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

перенаправляет на себя значение файла?f=$file_name

удаляет файл

скачать таймер для каждого файла в var секунд

Источник

unlink

(PHP 4, PHP 5, PHP 7, PHP 8)

unlink — Удаляет файл

Описание

Список параметров

Возвращаемые значения

Возвращает true в случае успешного выполнения или false в случае возникновения ошибки.

Список изменений

ВерсияОписание
7.3.0В Windows теперь можно удалить файлы функцией unlink() с использованием дескрипторов, хотя раньше это не удавалось. Тем не менее, всё ещё невозможно повторно создать удалённый файл, пока все дескрипторы к нему не будут закрыты.

Примеры

Пример #1 Пример простого использования unlink()

Привет, мир!

Смотрите также

User Contributed Notes 11 notes

This will delete all files in a directory matching a pattern in one line of code.

Deleted a large file but seeing no increase in free space or decrease of disk usage? Using UNIX or other POSIX OS?

However, it’s perfectly fine for a file to have several names (see the link() function), in the same or different directories. All the names will refer to the file body and `keep it alive’, so to say. Only when all the names are removed, the body of file actually is freed.

The caveat:
A file’s body may *also* be `kept alive’ (still using diskspace) by a process holding the file open. The body will not be deallocated (will not free disk space) as long as the process holds it open. In fact, there’s a fancy way of resurrecting a file removed by a mistake but still held open by a process.

I have been working on some little tryout where a backup file was created before modifying the main textfile. Then when an error is thrown, the main file will be deleted (unlinked) and the backup file is returned instead.

Though, I have been breaking my head for about an hour on why I couldn’t get my persmissions right to unlink the main file.

Finally I knew what was wrong: because I was working on the file and hadn’t yet closed the file, it was still in use and ofcourse couldn’t be deleted 🙂

So I thought of mentoining this here, to avoid others of making the same mistake:

Here the simplest way to delete files with mask

Источник

Я работаю над Moodle 2.2.1 и создал файлы dynamic.csv, используя определенные запросы. Я создал каталог /tmp/ с правами на запись в моем домашнем каталоге и, используя файловые функции, создал код.csv через мой код.

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

N с этой строкой в ​​.htaccess, файлы могут быть загружены на любой компьютер.

Но проблема сейчас в том, что каждый раз, когда я загружаю страницу, одни и те же файлы.csv создаются с разными временными метками. В основном я получаю много дубликатов файлов с разными временными метками в моем каталоге /tmp/.

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

Если кто-то может помочь мне с этим, я был бы очень признателен.

РЕДАКТИРОВАТЬ: Если мой код для создания и записи файла.csv, то, где я должен удалить старые файлы с отметкой времени до часа и как сохранить новые файлы.

4 ответа

Что вам в основном нужно сделать, это:

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

Возможно, удалите все файлы, которые старше одного часа, и это не самый новый файл.

ПРИМЕР УДАЛЕНИЯ ВСЕХ ФАЙЛОВ, КРОМЕ ОДНОГО С НОВЕЙШИМ TIMESTAMP:

Источник

Как удалить файл с сайта с помощью php, функция unlink, примеры использования

Всё об удалении файла через php

Где применяется удаление файла через php!?

Можно ли заменить работу с фалом и работу в базе данных.

Как переводится unlink

Синтаксис unlink

Возвращает TRUE в случае успешного завершения или FALSE.

Если файл лежит в той же папке, что и скрипт с функцией, то запись в скрипте может быть такая:

Самый простой скрипт удаления файла

Нам потребуется путь до корневой на сревре:

Еще нам потребуется путь_до_папки для удаления файла

И собственно файл, который будем удалять с помощью php

Соберем строку полностью по удалению файла и присвоим результат переменной:

И в результате, возврата, вернет либо true, либо false выводим результат удаления файла с помощью unlink

Код самого простого скрипта удаления файла php

Удаление файла по его адресу

Страница пример(он же в архиве) и мы можем видеть два поля input, одно поле ввода, другое тип submit(отправить)

В первое поле нужно вставить ссылку на файл на сайте, который хотим удалить!

И далее нажать «Удалить файл«

Как проверить работоспособность скрипта по удалению файла php!?

Скачиваем архив со скриптом по удалению файла php на сайте.

Нужно вытащить страницу из архива, и закачать в какую-то папку на сайте.

Создаем какую-то тестовую страницу, которую будем удалять, в любом месте на сайте.

Открываем её в браузере.

Копируем из адресной строки браузера адрес страницы.

Удаление файла по выделенной радиоточке

Прежде чем начать опять очень долго объяснять каждую строчку в скрипте, но вкратце все же:

У нас есть рабочий пример, о котором дальше и пойдет речь, правда удаление отключено, а то вы мне тут поудаляйте весь сайт удалить файл после скачивания php. Смотреть фото удалить файл после скачивания php. Смотреть картинку удалить файл после скачивания php. Картинка про удалить файл после скачивания php. Фото удалить файл после скачивания php

Мы взяли сформированную ссылку на файл и поместили в input с радиоточкой в value :

После этого, выбираем тот файл, который требуется удалить, нажав по радиоточке и нажимаем удалить!

И собственно, скрипт, что и в пункте 4, который и удалит выделенный файл и отправленный через радиоточку value

Источник

Как удалить файл в PHP?

Давайте попробуем решить простую задачу по удалению одного файла или нескольких файлов средствами PHP. В целом, здесь нет ничего сложного, но есть масса деталей, а также вариантов решений, о которых Вам стоит знать. В своей статье я не берусь объять необъятное, но растолковать пару вопросов и привести несколько примеров, думаю, смогу. Приступим?

удалить файл после скачивания php. Смотреть фото удалить файл после скачивания php. Смотреть картинку удалить файл после скачивания php. Картинка про удалить файл после скачивания php. Фото удалить файл после скачивания php

PHP функция unlink()

Пример использования php-функции unlink():

Почему эта функция называется unlink()?

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

Примечательно здесь и то, что в Unix можно связать несколько таких точек с одними и теми же данными. Таки данные будут существовать до тех пор, пока существует хотя бы одна ссылка на них. Но если все ссылки будут уничтожены, то и сами данные будут уничтожены. Таким образом, функция unlink() предназначена для удаления именно ссылок, и уже как следствия данных файла.

Как удалить файл(ы) в PHP?

В некоторых случаях может получиться и так, что функция unlink() не будет иметь доступа к удалению файла, т.е. получаем ошибку [function.unlink]: permission denied. Это может быть связано с неправильно указанным путём к файлу или отсутствием прав доступа.

Решение проблемы многопоточности при удалении файлов

Гораздо сложнее, когда речь заходит о крупных сайтах, где велико количество одновременных запросов (потоков) к скрипту. Здесь существует ряд решений. Я же приведу лишь одно из них, основное на использовании семафоров.

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

На этом у меня всё. Надеюсь, что моя статья была Вам полезна или просто познавательно. Спасибо за внимание. Удачи!

Никто ещё не оставил комментариев, станьте первым.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *