为什么我必须像上面这样使用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有效负载吗?
答案 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}
})
试试这种方式!