Подтвердить что ты не робот

Как загрузить несколько файлов с помощью одного HTTP-запроса?

Случай использования: пользователь щелкает ссылку на веб-странице - бум! загрузка файлов, находящихся в его папке.
Я пытался упаковать файлы, используя multipart/mixed message, но, похоже, работает только для Firefox

Вот как выглядит мой ответ:

HTTP/1.0 200 OK
Connection: close
Date: Wed, 24 Jun 2009 23:41:40 GMT
Content-Type: multipart/mixed;boundary=AMZ90RFX875LKMFasdf09DDFF3
Client-Date: Wed, 24 Jun 2009 23:41:40 GMT
Client-Peer: 127.0.0.1:3000
Client-Response-Num: 1
MIME-Version: 1.0
Status: 200

--AMZ90RFX875LKMFasdf09DDFF3 
Content-type: image/jpeg 
Content-transfer-encoding: binary 
Content-disposition: attachment; filename="001.jpg" 

<< here goes binary data >>--AMZ90RFX875LKMFasdf09DDFF3 
Content-type: image/jpeg 
Content-transfer-encoding: binary 
Content-disposition: attachment; filename="002.jpg" 

<< here goes binary data >>--AMZ90RFX875LKMFasdf09DDFF3 
--AMZ90RFX875LKMFasdf09DDFF3--

Спасибо,

P.S. Нет, файлы zipping не являются опцией

4b9b3361

Ответ 1

Zipping - единственный вариант, который будет иметь согласованный результат во всех браузерах. Если это не вариант, потому что вы не знаете, что молнии можно генерировать динамически, ну, они могут. Если это не вариант, потому что у вас есть недовольство почтовыми файлами, хорошо..

MIME/multipart предназначен для отправки сообщений электронной почты и/или POST на HTTP-сервер. Он никогда не предназначался для получения и анализа на стороне клиента транзакции HTTP. Некоторые браузеры его реализуют, другие - нет.

В качестве еще одной альтернативы вы можете создать JavaScript файлы, открывающие окна, загружающие отдельные файлы JavaScript script. Или Java-апплет (требуется Java Runtimes на машинах, если это корпоративное приложение, это не должно быть проблемой [поскольку NetAdmin может развернуть его на рабочих станциях]), который будет загружать файлы в каталог выбора пользователя.

Ответ 2

Помните об этом > 10 лет назад в netscape 4 дня. Он использовал границы, как то, что вы делали, и вообще не работал с другими браузерами в то время.

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

Ответ 3

Вы можете использовать кодировку base64 для встраивания (очень маленького) изображения в HTML-документ, однако с точки зрения браузера/сервера вы по-прежнему отправляете только один документ. Может быть, это то, что вы намереваетесь сделать?

Вставить изображения в HTML с помощью Base64

EDIT: я только понял, что большинство методов, которые я нашел в моем поиске Google, поддерживают только firefox, а не iE.