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

Я использую это для отправки файла пользователю

header('Content-type:  application/zip');
header('Content-Length: ' . filesize($file));
header('Content-Disposition: attachment; filename="file.zip"');
readfile($file);

Я хочу удалить этот файл после того, как пользователь загружает его, как я могу сделать это?

Править: Мой сценарий похож на это, когда пользователь поразит кнопку загрузки, мой сценарий создаст временный zip-файл, и пользователь загружают его затем, что временный zip-файл будет удален.

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

EDIT3: Я протестировал свой сценарий с unlink, это работает если пользовательская отмена загрузка. Если пользователь отменяет загрузку, zip-файл остается на сервере. Таким образом, это достаточно на данный момент.:)

EDIT4: НИЧЕГО СЕБЕ! connection_aborted() сделанный приемом!

ignore_user_abort(true);
if (connection_aborted()) {
    unlink($f);
}

Этот удалит файл даже если пользовательская отмена загрузка.

52
задан Siguza 28 June 2015 в 21:12
поделиться

3 ответа

unlink($filename);

Это удалит файл.

Его необходимо объединить с ignore_user_abort () Docs , чтобы unlink по-прежнему выполнялся, даже если пользователь отменил загрузку.

ignore_user_abort(true);

...

unlink($f);
30
ответ дан 7 November 2019 в 09:32
поделиться

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

8
ответ дан 7 November 2019 в 09:32
поделиться

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

Насколько я знаю, надежного способа сделать это без Flash (или аналогичного плагина для браузера) невозможно.

0
ответ дан 7 November 2019 в 09:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: