Ошибка Invalid zip выдается, когда zip загружается через расширение VirtueMart сайта joomla.

Если какой-либо опытный парень когда-либо сталкивался с такой ошибкой, например, когда мой пользователь загружает zip-файл расширений с моего сайта joomla и пытается извлечь/открыть локально, он получает неверный zip, тип ошибок в центральном каталоге не найден! проблема возникает, когда они используют не winrar, а другие программы zip, такие как winzip. Я не понимаю, почему это должно происходить ??

К вашему сведению, я использовал плагин для бесплатной загрузки для виртуальной машины, чтобы сделать загрузку доступной, поэтому zip-файл расширения находится не в корневой папке моего сайта, а в недоступной верхней папке, как это делает joomla vm2. После следующих тестов я сузил проблему. к проблемам с кодами плагинов для бесплатной загрузки joomla или Virtuemart Spiral в том, как это делает загрузку zip.

Test1 - чтобы убедиться, что размещение zip вне корневой папки сайта не является проблемой, я поместил zip в корневую папку сайта и загрузил его, введя адрес в браузере, удалив локальную программу winrar zip и не получая никаких ошибок, когда я открываю заархивировать, нажав.

Test2 - Затем я создал модуль joomla и использовал тот же код, что и плагин для бесплатной загрузки Spiral, и загрузочный zip теперь находится в папке модуля (не вне корневой папки), но когда я загрузил zip из модуля, я получаю ту же ошибку, что и я написал, что меня беспокоит.

Так что именно проблема заключается в joomla косвенно или в плагине бесплатной загрузки спирали кода, который готовит zip-файл для загрузки продукта расширения для virginmart моего сайта joomla. Эти коды следующие:

header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename="".JFile::getName($media->file_url).""");
if (!readfile($media->file_url)) $output = jText::_('VMCUSTOM_SPIRAL_FREEDOWNLOAD_NO_FILE_FOUND');

Я немного улучшил вот это, но проблема с почтовым индексом все еще сохраняется -

header("Content-Type: application/zip");
header("Content-Disposition: attachment; filename="".JFile::getName($media->file_url).""");
header("Content-Length: ".filesize($media->file_url));
if (!readfile($media->file_url)) $output = jText::_('VMCUSTOM_SPIRAL_FREEDOWNLOAD_NO_FILE_FOUND'); 

Так есть ли проблемы в этих кодах?


person dev-m    schedule 25.02.2014    source источник
comment
Поскольку я долго ждал, но не получил ответов от экспертов, поэтому, проведя дополнительные тесты, я обнаружил, что перед этими объявлениями заголовков, если я добавлю ob_end_clean(); об_старт(); тогда кажется, что это работает, поскольку я тестирую локально. Должен ли я помещать что-либо после/перед объявлениями заголовков? Пожалуйста, ответьте с подробными кодами.   -  person dev-m    schedule 27.02.2014


Ответы (1)


Во-первых (и это просто примечание), вы должны использовать JText, а не jText.

Попробуйте использовать следующее, в котором есть несколько изменений кавычек

header("Content-Disposition: attachment; filename=".JFile::getName($media->file_url));

JFile::getName также устарел, поэтому в зависимости от используемой версии Joomla попробуйте вместо этого следующее:

header("Content-Disposition: attachment; filename=".basename(strtolower($media->file_url)));
person Lodder    schedule 25.02.2014
comment
Спасибо за ответ, версия joomla 2.5.11. Написание JText, удаление кавычек для имени файла, использование метода базового имени не работает. Те же ошибки сохраняются. - person dev-m; 26.02.2014