Как загрузить файл НЕ используя многочастное кодирование? (возможно, используйте октет или что-то)

0

Мы хотели бы, чтобы наше веб-приложение могло загружать файлы из браузера (пользователь выбирает файл стандартным образом). Но либо ajax, либо не ajax, и предпочтет, чтобы файл обрабатывал весь текст POST, не имея ничего другого в теле (т.е. мы действительно не хотим всех остальных полей и нуждаемся только в содержимом файла)

Я читал что-то о том, что может быть способ сделать это с помощью ajax, но, похоже, не может найти никакой информации, связанной с приложением /octect-stream или чем-то еще.

Кто-нибудь сделал это раньше и как выглядит html/javascript для того, чтобы это работало правильно, так что это также чанк файл и не отправляется на веб-сервер как одна огромная гигантская вещь.

Есть ли что-то в html 5, которое помогает здесь.

спасибо, Дин

  • 0
    Я уверен, что единственный способ сделать это с помощью HTTP - это составной документ, ajax или no ajax. Другой альтернативой является использование веб-сокетов.
Теги:
http

2 ответа

2
Лучший ответ

Это довольно просто сделать, просто передайте blob/file в качестве параметра для вашего вызова метода отправки на вашем экземпляре XHR, например:

function uploadFile(blobOrFile) {
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "http://mydomain.com/upload", true);
    xhr.send(blobOrFile);
}

Обратите внимание, что это будет работать только в браузерах API файлов (т.е. не в IE9 и старше)

  • 0
    Да, это правда, но разве у вас не получится многокомпонентный документ, как если бы вы были в простой форме?
  • 0
    Нет, в результате вы получите запрос POST с полезной нагрузкой, которая полностью состоит из файла.
Показать ещё 5 комментариев
0

Я думаю, что я собираюсь в конечном итоге попробовать метод websockets, как этот код (просто нашел это)

https://github.com/jberger/GalileoSend/blob/master/js/galileo_send.js

поскольку у нас есть 4 сервера без учета состояния за балансировщиком нагрузки, и если я иду методом xmlhttprequest, я получаю куски на разных серверах, что нормально, если я копирую заголовок файла, который будет помещен в каждый кусок, но я просто решил отказаться от этого и сделать websocket, который, надеюсь, также немного уменьшит накладные расходы на http, хотя я пропущу некоторый параллелизм, который я мог бы иметь с xmlhttprequest.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню