Мы хотели бы, чтобы наше веб-приложение могло загружать файлы из браузера (пользователь выбирает файл стандартным образом). Но либо ajax, либо не ajax, и предпочтет, чтобы файл обрабатывал весь текст POST, не имея ничего другого в теле (т.е. мы действительно не хотим всех остальных полей и нуждаемся только в содержимом файла)
Я читал что-то о том, что может быть способ сделать это с помощью ajax, но, похоже, не может найти никакой информации, связанной с приложением /octect-stream или чем-то еще.
Кто-нибудь сделал это раньше и как выглядит html/javascript для того, чтобы это работало правильно, так что это также чанк файл и не отправляется на веб-сервер как одна огромная гигантская вещь.
Есть ли что-то в html 5, которое помогает здесь.
спасибо, Дин
Это довольно просто сделать, просто передайте blob/file в качестве параметра для вашего вызова метода отправки на вашем экземпляре XHR, например:
function uploadFile(blobOrFile) {
var xhr = new XMLHttpRequest();
xhr.open("POST", "http://mydomain.com/upload", true);
xhr.send(blobOrFile);
}
Обратите внимание, что это будет работать только в браузерах API файлов (т.е. не в IE9 и старше)
Я думаю, что я собираюсь в конечном итоге попробовать метод websockets, как этот код (просто нашел это)
https://github.com/jberger/GalileoSend/blob/master/js/galileo_send.js
поскольку у нас есть 4 сервера без учета состояния за балансировщиком нагрузки, и если я иду методом xmlhttprequest, я получаю куски на разных серверах, что нормально, если я копирую заголовок файла, который будет помещен в каждый кусок, но я просто решил отказаться от этого и сделать websocket, который, надеюсь, также немного уменьшит накладные расходы на http, хотя я пропущу некоторый параллелизм, который я мог бы иметь с xmlhttprequest.
это просто еще один ответ, который, как я думал, я бы добавил здесь, чтобы быть полным в выборе, который, как я думаю, у всех нас есть.