Я пытаюсь создать загрузчик PDf, в котором пользователь может выбрать пару файлов, а затем загрузить zip из того, что они выбрали.У меня это работало на моем личном сервере, но на рабочем сервере я получаю странную ошибку.Файл zip генерируется, но к нему добавляется строка чисел, например:
zipfile.zip.a08752, zipfile.zip.b08752
Еще страннее, если я удаляю строку с концаи загрузите файл, который он расширяет должным образом.
Я читал в этой теме PHP Zip Archive, время от времени создавая несколько файлов , что проблема в том, что файл пытается закрываться несколько раз, не удается и повторная попытка.
Вот код для моей функции zip, хотя я подозреваю, что это как-то связано с конфигурацией
function buildZip($params){
/* Generate unique Id */<br>
$downloadid = uniqid();</p>
<code>/* 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>
</code>
. Для Clarity я использую список XML с именем order.xml, чтобы извлечьмассив возможных файлов.