В середине сборки построителя / загрузчика документов в виде корзины в PHP 5.6.11 и MySqli 5.6.30 в Ubuntu 15.04. Многие детали работают индивидуально, но не вместе.
Таблица базы данных содержит конкретные названия продуктов вместе с соответствующими URL-адресами документации (где PDF-файлы хранятся на сервере).
Вот последовательность событий, продиктованных рабочим процессом конечного пользователя:
$results['url']
Переменные со страницы PHP # 1 в массиве, создает zip, добавляет проверенные файлы и загружает подсказки.$results['url']
из результатов поиска в базе данных на PHP # 1 в массив загрузки процессора PHP # 2.Страница PHP # 1, запрос:
$raw_results = mysql_query("SELECT * FROM mobilesearchspec
WHERE (`url` LIKE '%".$query."%') OR (`product` LIKE '%".$query."%') ORDER BY product ") or die(mysql_error());
if(mysql_num_rows($raw_results) > 0){ // if one or more rows are returned do following
while($results = mysql_fetch_array($raw_results)){
echo "<p><input type=checkbox name=item[] value=$results[url]>" ; echo "".$results['product']."<br>";
echo "<a href='" .$results['url'] . "'>". $results['url'] . "</a>";
Вот полный код процессора PHP Page # 2 (из решения RajdeepPaul ниже + стирание zip-каталога):
$files = $_POST['item'];
$timestamp = date("M-d-Y_H:i:s"); //$timestamp takes the current time
$zipname = "zip_".$timestamp.".zip"; // add timestamp to the file name
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach ($files as $file){
$downloaded_file = file_get_contents($file);
$zip->addFromString(basename($file),$downloaded_file);
}
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Length: ' . filesize($zipname));
readfile("$zipname");
// removes zip file from directory after creation
array_map('unlink', glob("*.pdf"));
array_map('unlink', glob("*.zip"));
Я открыт и чрезвычайно благодарен за любые предложения!
Измени свой foreach
цикл следующим образом,
foreach ($files as $file){
$downloaded_file = file_get_contents($file);
$zip->addFromString(basename($file),$downloaded_file);
}
Итак, ваш код на Страница 2 должно быть так:
$files = $_POST['item'];
$timestamp = date("M-d-Y_H:i:s"); //$timestamp takes the current time
$zipname = "zip_".$timestamp.".zip"; // add timestamp to the file name
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach ($files as $file){
$downloaded_file = file_get_contents($file);
$zip->addFromString(basename($file),$downloaded_file);
}
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Length: ' . filesize($zipname));
readfile("$zipname");
Других решений пока нет …