Я написал очень простую веб-форму, которая позволяет моему пользователю просматривать текстовые файлы из своего интернет-браузера.Невозможно заархивировать несколько файлов за один раз
Иногда введенные критерии поиска возвращают более одного файла. Поэтому я хочу реализовать функцию, при которой текстовые файлы, возвращаемые поиском, сжимаются в ZIP.
У меня есть прототип, но он только сжимает первый файл. Второй или третий файлы игнорируются.
Вот мой код
<HTML><body><form name="myform" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<fieldset><label for="DBRIDs">RIDs</label><input type="text" id="DBRIDs" name="DBRIDs" >
</fieldset></form></body></HTML>
<?php
function check_search() {
if (isset($_POST['submit'])) {if (!empty($_POST['DBRIDs'])) { $results = getFiles(); }
} else $errors = "Please enter something before you hit SUBMIT.";
return Array($results, $errors);
}
function getFiles() {
$result = null;
$ZIPresult = null;
if (empty($_POST['DBRIDs'])) { return null; }
$mydir = MYDIR;
$dir = opendir($mydir);
$DBRIDs = $_POST['DBRIDs'];
$getfilename = mysql_query("select filename from search_table where rid in (" . $DBRIDs . ")") or die(mysql_error());
while ($row = mysql_fetch_array($getfilename)) {
$filename = $row['filename'];
$result .= '<tr><td><a href="' . basename($mydir) . '/' . $filename . '" target="_blank">' . $filename . '</a></td></tr>';
$ZIPresult .= basename($mydir) . '/' . $filename;
}
if ($result) {
$result = "<table><tbody><tr><td>Search Results.</td></tr> $result</table>";
shell_exec("zip -9 SearchResult.zip ". $ZIPresult ." > /dev/null ");
} return $result;
}
Гиперссылка, указывающая на файл (ы) генерируется только штрафом. Однако ZIP-файл содержит только первый файл, указанный в результатах.
Как я могу получить ZIP-файл для захвата ВСЕХ файлов, возвращаемых ??
Спасибо за ваш вклад.
PS: Новая библиотека/класс ZipArchive() недоступна в нашей производственной среде, поэтому я решил вместо этого использовать утилиту Unix.
Вы уверены, что используете соответствующие флаги и синтаксис с помощью утилиты zip-файла? Возможно, вы указали несколько файлов неправильно. http://linux.about.com/od/commands/l/blcmdl1_zip.htm – user978122
Вы отправили содержимое $ ZIPresult в виде обычного текста, чтобы убедиться, что оно заполнено правильно? – Maxpm
Я уверен, что использую правильные флаги, но дважды проверю; здесь «-9» для опции «сжимать лучше». – Chris