IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Загрузка файлов по http (https://www.imho.ws/showthread.php?t=99933)

Krasyuk 16.02.2006 12:14

Загрузка файлов по http
 
Привет, All!

Есть такая проблема: имеется большой архив файлов на веб - сервере,
пользователь должен иметь возможность через форму (cgi - скрипт на perl)
отобрать группу файлов и загрузить их в удобном виде. Неясности именно с
загрузкой. Опыта в разработке веб - приложений маловато поэтому помогите :)
Главное требование - не создавать временных файлов на сервере для создания
архива загружаемых файлов и т.п.

Пока выгрузку представляю либо путем создания архива файлов, при этом
архиватор выводит архив на стандартный вывод, который передается
пользователю в браузер. Тут вопрос: архиватор (ориентируюсь на 7zip) сначала
создаст архив во временном файле и потом его выведет через стандартный вывод
(так мне не подходит) или временных файлов создаваться не будет?
Либо в одном ответе сервера передавать несколько файлов, но что-то я не
видел, чтобы браузер по одной ссылке загружал несколько файлов. Или такое
всеж бывает?

Подскажите ответы на вопросы, если есть примеры решений не сочтите за
труд поделится, или может я вообще не правильно все представляю и есть
простой и проверенный путь решения подобных проблем - поделитесь.

Уф, спасибо за внимание! :)

Hubbitus 17.02.2006 12:26

Цитата:

Krasyuk:
Тут вопрос: архиватор (ориентируюсь на 7zip) сначала
создаст архив во временном файле и потом его выведет через стандартный вывод
(так мне не подходит) или временных файлов создаваться не будет?
А почему собственно не подходит?? Вообще, если вывод делать сразу в stdout, то в привычном смысле файлов создаваться не будет. Хотя с другой стороны, Линукс такая операционка где файлами является все, от устройств, до памяти и процессора... поэтому где же ему еще хранить данные архива как не в файле?? Другое дело что на это время будет создан временный файл, скорее всего где-то в /tmp, который будет удален, после завершения операции отдачи, атоматически.

bdimych 22.02.2006 20:14

Если cgi имеется в виду perl и файлы по размеру "в разумных пределах" то есть модуль Archive::Zip

Код:

use Archive::Zip;
my $zip = Archive::Zip->new();
foreach my $file (@files) {
  $zip->addFile($file);
};
$zip->writeToFileHandle(STDOUT);



Часовой пояс GMT +4, время: 16:39.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.