PHP Безопасный способ скачать файлы и сохранить их - PullRequest
0 голосов
/ 21 марта 2011

Мне нужен способ загрузить много файлов и сохранить их в файловой системе с помощью PHP. Это для инструмента развертывания, и я планировал использовать Zip-файл, так как я просто вызываю некоторый код распаковки, и это просто. Тем не менее, функциональность ZIP является расширением, которое есть не у всех.

Моя единственная другая идея сейчас состоит в том, чтобы сжать все в один файл в кодировке Base64, декодировать его и записать обратно. Это не идеально (или это?). Предложения?

Ответы [ 2 ]

2 голосов
/ 21 марта 2011

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

В противном случае, придумайте свой собственный формат файла архива, это не сложно. Это может быть что-то очень простое, как это:

  • Первые 4 байта: количество файлов в архиве
  • Следующие 4 байта: количество байтов в имени файла
  • Следующие N байт: Имя файла
  • Следующие 10 байтов: количество байтов в файле
  • Следующие N байт: Содержимое файла
  • Повторите вышеуказанные 4 строки при необходимости

Так что очень простой архивный файл может выглядеть как

00020007foo.txt0000000012Hello world!0007bar.txt0000000010It worked!

Конечно, вы можете улучшить его, сохранив длины в двоичном формате (например, используя pack с форматом 'N'), добавив контрольные суммы и так далее. Но так было проще объяснить.

0 голосов
/ 21 марта 2011

base64 просто переводит порцию данных в формат, который «безопасен» для передачи по электронной почте, который затем может быть декодирован обратно в его собственный 8-битный формат.Он не позволяет архивировать / сжимать несколько файлов в один файл.Вы можете встроить несколько отдельных файлов в кодировке base64 во что-то вроде сообщения MIME, которое допускает несколько разных вложений.Но затем вы возвращаетесь к той же проблеме - не все будут обрабатывать сообщения MIME, поскольку это домен электронной почты.

Zip - ваш лучший выбор.Его версии доступны для каждой крупной ОС под солнцем и встроены в файловые менеджеры для большой 2 - MacOS и Windows.Другие альтернативы (rar, 7z и т. Д.) Встречаются гораздо реже и, безусловно, не имеют шансов получить поддержку «из коробки».

...