为什么要使用ng-file-upload上传服务

时间:2016-10-04 19:11:10

标签: javascript angularjs express multer ng-file-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本身不能执行multipart / form-data POST请求吗?

修改

我一直试图通过$ http进行多部分的后期工作。 我将标题更改为:

"multipart/form-data; boundary=----WebKitFormBoundarypEvyJj8BAuq4lk7T"

但我在快递服务器上收到此错误

Error: Multipart: Boundary not found

我假设上传服务的重点在于它解析具有多部分边界的POST有效负载吗?

1 个答案:

答案 0 :(得分:1)

你绝对可以,为处理文件上传而创建的所有模块的目的都是浏览器支持。 IE10 +仅支持FormData()对象。因此,如果您需要支持旧浏览器,则需要使用<iframe>策略解决此问题,或者只使用现有的库,这些库基本上都是这样做的。

<强>更新

var fd = new FormData();
fd.append('file', model.file);
$http.post(uploadUrl, fd, {
    transformRequest: angular.identity,
    headers: {'Content-Type': undefined}
})

试试这种方式!