Заархивируйте и загрузите файлы из каталога и удалите файл .zip после загрузки

Я пытаюсь заархивировать и загрузить файлы из каталога с помощью PHP, и я использовал предложение «skrilled» со следующего URL-адреса:

Заархивируйте все файлы в каталоге и загрузите сгенерированный .zip

Код у меня работает нормально, но мне нужно добавить в код следующие функции:

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

$zipname = 'adcs_RAN-CHARACTERS-HERE.zip';

  1. Я хочу удалить файл после того, как пользователь загрузил файл.

person Tajik    schedule 09.11.2014    source источник
comment
Я думаю, вы можете удалить zip-файл со своего сервера, используя unlink()   -  person Anju Aravind    schedule 09.11.2014


Ответы (1)


Я хочу добавить случайные символы к имени файла, как показано ниже: $zipname = 'adcs_RAN-CHARACTERS-HERE.zip';

Когда вы создаете имя, продолжайте и вставляйте любые случайные символы, которые вы хотите. Скажем, например, вы хотите включить несколько удобочитаемую временную метку (с точностью до секунды), вы можете сделать это следующим образом:

$zipname = 'adcs_' . date('YmdHis') . '.zip';

Обратите внимание, что в строке заголовка вам нужно указать имя переменной:

header("Content-Disposition: attachment; filename='$zipname'");

Я хочу удалить файл после того, как пользователь загрузил файл.

Это становится сложнее. Проблема в том, что вы не можете точно знать, когда пользователь закончил загрузку файла. Я бы использовал другой скрипт для периодической очистки файлов (например, запланированный как задание cron). Или каждый раз, когда вы собираетесь создать новый zip-файл, вы можете сначала удалить все старые. Или просто используйте каталог temp/tmp в системе, который будет очищен всякий раз, когда это произойдет.

person phansen    schedule 09.11.2014
comment
Спасибо за инструкцию, мне помогло. Теперь я думаю добавить некоторые новые функции в файлы. 1. Как я могу отслеживать количество загрузок с помощью файла .txt или базы данных MySQL? 2. Как отобразить количество загрузок на странице? - person Tajik; 16.11.2014
comment
Я бы использовал базу данных MySQL. Сохраните уникальное идентифицируемое имя файла как поле в таблице. Всякий раз, когда пользователь хочет загрузить файл, проверьте, есть ли у файла запись в таблице, если это так, вы можете получить и отобразить текущее количество загрузок. Затем, когда они загружают файл, вы можете либо вставить новую запись для нового файла (начиная с 1), либо обновить существующую запись, увеличив количество загрузок. - person phansen; 18.11.2014