我使用https://github.com/nervgh/angular-file-upload进行文件上传。
我有一个表单,除了上传文件外,还会发送一些其他字段。为清楚起见,我在此示例中仅发送一个字段:
$scope.save_with_upload = function(user) {
$scope.uploader.formData = [{
name: user.name,
}];
$scope.uploader.uploadAll();
}
假设name
输入的值为 Test 1 。
formData
。name
字段更改为测试2 并点击保存。它会发送文件,formData
,但它发送的name
的值为 Test 1 。name
字段更改为测试3 并点击保存。它发送文件并formData
,但它发送的name
的值是测试2 。因此,似乎总是在最后一次调用formData
之前发送分配给uploadAll
的数据。
澄清一下:如果我在致电dir(user, $scope.uploader.formData)
之前uploadAll
,则会在两者中显示正确的最新值。
我一直在苦苦挣扎几个小时,似乎看不出有什么不对劲。有什么想法吗?
答案 0 :(得分:12)
将表单字段附加到FileItem
对象 - 而不是FileUpload
- 修复它:
uploader.onBeforeUploadItem = function(item) {
formData = [{
name: user.name,
}];
Array.prototype.push.apply(item.formData, formData);
};
原因是,实际上使用了FileItem
上的设置。将文件添加到队列后,FileUpload
的设置将复制到FileItem
。因此,在将文件添加到队列后对FileUpload
选项所做的任何更改都将无效。