Есть ли (бесплатный) способ распаковать файлы .zip без использования .DLL в ASP Classic - PullRequest
1 голос
/ 09 августа 2010

Я хотел бы иметь возможность распаковать файл .zip с использованием ASP classic.

Я немного поковырялся в Google для чего-то, что позволит мне это сделать, и, похоже,быть изрядным количеством библиотек там.Однако, насколько я могу судить, все это требует от меня установки сторонней DLL.

Сервер, на котором будет развернут этот сценарий (или, точнее, ИТ-отдел, управляющий указанным сервером), не позволит мне использовать их для расширения функциональности ASP и выполнения того, что мне было предложено (абсолютно парадоксально).!).

Есть ли какая-нибудь библиотека классов, которую я мог бы просто добавить в качестве включения?

спасибо за ваше время

Ответы [ 2 ]

0 голосов
/ 10 августа 2010

Я решил свою проблему ... она довольно грязная, далека от идеальной и зависит от настройки сервера, но ради любого, у кого в будущем возникнет аналогичная проблема и сервер, я решил ее.

В основном я использовал PHP-библиотеку ZIP, которая, кажется, установлена ​​на сервере, на котором я работаю, и создал файл unzip.php:

<?PHP

$infile = $_REQUEST['infile'];
$outfile = $_REQUEST['outfile'];

$input_folder = "uploads";
$output_folder = "templates";

echo "false";

$zip = zip_open($input_folder."/".$infile);
if ($zip) {
  while ($zip_entry = zip_read($zip)) {
    $fp = fopen($output_folder."/".$outfile."/".zip_entry_name($zip_entry), "w");
    if (zip_entry_open($zip, $zip_entry, "r")) {
      $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
      fwrite($fp,"$buf");
      zip_entry_close($zip_entry);
      fclose($fp);
    } else {
    echo "false";
    exit;
    }
  }
    echo "true";
  zip_close($zip);
} else {
    echo "false";
    exit;
}

?>

Тогда, где я хотел вызвать это в своем сценарии ASP, я HTTPXML обращался к расположению файла PHP на том же сервере, где мои переменные были частью строки запроса.

Response.Buffer = True
Dim objXMLHTTP, xml
Set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.Open "GET", "http://" & strdomain & "/unzip.php?infile="& filename &"&outfile=" & out_foldername, False
xml.Send
if xml.responseText = "true" then
    SaveFiles = SaveFiles & "(unzip successful!)"
else
    SaveFiles = SaveFiles & "(unzip failed!)"
end if
Set xml = Nothing
next

, где

filename     =   The name of the file that you want to unzip
out_folder   =   The name of the folder that you want put your unzipped files into
strdomain    =   Request.ServerVariables("HTTP_HOST")
SaveFiles    =   my return variable.

Я уверен, что должен быть лучший способ сделать это, но на данный момент в моей ситуации это работает нормально (и, надеюсь, никто никогда не узнает!).

0 голосов
/ 09 августа 2010

Не уверен, что вы можете заставить его работать с ASP, но в этом проекте вы найдете способ разархивировать в VB, используя DLL, но вам не нужно регистрировать DLL, просто поставьте это где-то, где класс может найти это.

Я использовал его в скомпилированном приложении VB 6, но, возможно, вы можете адаптировать его к ASP. Не уверен.

Это код, который вам понадобится: UnZip.cls
Надеюсь, это поможет.

...