Зачем использовать сервис загрузки файлов ng-file-upload
Почему я должен использовать сервис Upload с ng-file-upload, как это
Upload.upload({
url: '/postMyFormHere',
data: {
fileToUpload: model.file,
someField1: model.field1,
someField2: model.field2,
}
})
и не могу просто сделать
$http({
method: 'post',
headers: {
'content-type': 'multipart/form-data'},
url: '/postMyFormHere',
data: {
fileToUpload: model.file,
someField1: model.field1,
someField2: model.field2,
}
})
Я думал, что ng-file-upload просто позволяет связывать файлы из файловых входов с моделью. Разве Angular не может сделать POST-запрос multipart / form-data?
Редактировать:
Я пытался заставить мою работу из нескольких частей работать через $http. Я изменил заголовок на:
"multipart/form-data; boundary=----WebKitFormBoundarypEvyJj8BAuq4lk7T"
Но я получаю эту ошибку на моем экспресс-сервере
Error: Multipart: Boundary not found
Я предполагаю, что весь смысл сервиса Upload заключается в том, что он анализирует полезную нагрузку POST с границей многопользовательской части, верно?
1 ответ
Вы абсолютно можете, целью всех модулей, которые создаются для обработки загрузки файлов, является поддержка браузера. IE10+ только поддержка FormData()
объект. Так что, если вам нужна поддержка старых браузеров, вам нужно решить эту проблему, используя <iframe>
стратегии, или просто использовать существующие библиотеки, которые в основном делают то же самое.
ОБНОВИТЬ
var fd = new FormData();
fd.append('file', model.file);
$http.post(uploadUrl, fd, {
transformRequest: angular.identity,
headers: {'Content-Type': undefined}
})
Попробуйте так!