При создании zip-архива к нескольким файлам добавляются непредсказуемые строки.

Я пытаюсь создать загрузчик PDF, в котором пользователь может выбрать пару файлов, а затем загрузить zip-архив того, что он выбрал. У меня это работало на моем личном сервере, но на рабочем сервере я получаю нечетную ошибку. Создается zip-файл, но к нему добавляется строка чисел, например;

zipfile.zip.a08752, zipfile.zip.b08752

Еще более странно, если я удалю строку с конца и загружу файл, он правильно расширится.

Я читал в этой теме PHP Zip Archive спорадически создает несколько файлов, что это проблема с попыткой закрытия файла несколько раз, неудачей и повторной попыткой.

Heres the code for my zip function, though I suspect it's something to do with the configuration of the

 function buildZip($params){
    /* Generate unique Id  */
$downloadid = uniqid();

/* Pull in the order.xml */ if(!empty($_REQUEST['downloadlink'])){ if( $params->usexml == true){ $xml = @simplexml_load_file($params->pdfolder.'/order.xml'); $order = $xml->children(); }else{ $order = $params->files; } /* Create the new Zip */ $zip = new ZipArchive(); if ($zip->open($params->zipname.'version'.$downloadid.'.zip', ZIPARCHIVE::CREATE) !== TRUE) { die ("Could not open archive"); } /* Generate the download link to output further down the page */ global $downloadLink; $downloadLink = $params->zipname.'version'.$downloadid.'.zip'; /* Make selected variable available to build the listSelection function */ global $selected; $selected = array(); $i = 0; foreach($order as $el){ if (isset($_POST[$i]) == true){ //generate list of selected PDF's array_push($selected, $el->name); //grab selected pdf's and zip them. echo $zip->addFile($params->pdfolder.'/'.$el->link); $zip->addFile($params->pdfolder.'/'.$el->link) or die ("ERROR: Could not add file: pdf'.$i.'.html"); } $i++; } $zip->close(); } } <code>

Для ясности я извлекаю список XML с именем order.xml, чтобы получить массив возможных файлов.


person Andrew Joseph Nickerson    schedule 09.09.2011    source источник
comment
Забыл упомянуть, но мы работаем на PHP 5.2.14, и класс ZIP существует, хотя в phpinfo() '--enable-zip' указан в команде configure на моем сервере с рабочей версией, но не на рабочем сервере. . Не знаю, имеет ли это значение.   -  person Andrew Joseph Nickerson    schedule 09.09.2011


Ответы (2)


Попробуйте обрезать странную строку чисел после завершения архивирования.

person Ahmad Hajjar    schedule 09.09.2011

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

person burkybang    schedule 25.04.2017