@artyvr

Как проверить скачан ли файл?

Есть php-скрипт который архивирует файлы и отдает архив пользователю, как определить скачан ли архив для последующего удаления?
  • Вопрос задан
  • 2428 просмотров
Решения вопроса 1
KorsaR-ZN
@KorsaR-ZN
Только если отдавать архив через php, но это не хорошо т.к нагрузка будет не нужная.

Сделать нужно следующее, когда вы отдаёт файл пользователю, через php, то читайте его кусочками. И сохраняйте в буфер кол-во отданных байт, как кол-во отданного будет равно размеру файла, то файл можно считать скаченным и соответственно произвести удаление. Но если вы хотите ещё поддерживать докачку при обрыве соединения, то нужно ещё учитывать заголовки смещений при докачки и дополнять буфер уже оданными байтами ранее, при предыдущей сессии. Ну вот как-то так...

Или второй вариант, по факту обращения к ссылки на скачивание, помечайте файл, как якобы скаченный, и потом скажем через 24 часа удаляете его.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Сохранить и удалить через какое-то время)
Ответ написан
Комментировать
@artyvr Автор вопроса
KorsaR-ZN спасибо за направление, получилось вот что:
...
$file = 'file.zip';
header('Content-Description: File Transfer');
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename=' . basename($file));
header('Content-Length: ' . filesize($file));
$f = fopen($file, 'rb');
while (!feof($f)) {
    echo fread($f, 8192);
    flush();
}
fclose($f);
unlink($file); 
...

уж не знаю насколько это правильно...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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