Зачем использовать сервис загрузки файлов 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}
})

Попробуйте так!

Другие вопросы по тегам