Codeigniter Download Helper повреждает .7z и .rar файлы помощи или альтернативных решений?

Я использую помощник Download Codeigniter для «простой» загрузки.

$this->load->helper('download'); $file = //get_file_name_from_db $data = file_get_contents( upload_path . $file); force_download($file, $data); 

Проблема в том, что любой .zip загружается правильно, а .7z и .rar – нет. Однако, когда я проверяю загруженные файлы, чтобы увидеть их, они повреждены или нет, они прекрасны (через FTP или локально, просто проверяя папки).

Чтобы добавить к путанице, если файл действительно маленький (например, 5 кбайт или около того), ни один из типов (7z и rar) не будет поврежден.

Для справки здесь используются типы mime, которые я использую в mime.php (что используется как для загрузки, так и для загрузки)

 'zip' => array('application/x-zip', 'application/zip', 'application/x-zip-compressed'), '7z' => array('application/x-7z-compressed','application/x-7z', 'application/7z', 'application/force-download', 'application/octet-stream'), 'rar' => array('application/x-rar-compressed','application/x-rar', 'application/rar', 'application/octet-stream') 

Проблема может быть в двух точках, либо в типе mime (что, вероятно, не так, как указано, при очень небольших размерах файлов он работает). Или файл_get_contents () и заголовок («Content-Length:» .strlen ($ data)); что может и не быть так, независимо от размера .zip всегда будет загружаться правильно.

Или это может быть проблема с конфигурацией сервера? Я тестировал его как на хосте, так и на localhost, и они ведут себя одинаково.

Так кто-нибудь знает, в чем проблема, или может предложить альтернативный сценарий загрузки или метод, который я должен использовать?

UPDATE: я загрузил 7z-файл на хост размером 1,8 МБ, и при загрузке файл не был поврежден … Мне все труднее и труднее понять, в чем проблема.

ОБНОВИТЬ:

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

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

Я не думаю, что в PHP встроена библиотека для генерации файлов 7z или rar, таких как zip / gzip. Для этого вам может потребоваться использовать внешнюю библиотеку, если она есть.