Javascript AngularJS文件上载发送过时的formData
我用它来上传文件 我有一个表单,除了上传文件,还发送一些其他字段。为清楚起见,在本例中,我只发送一个字段:Javascript AngularJS文件上载发送过时的formData,javascript,angularjs,file-upload,form-data,Javascript,Angularjs,File Upload,Form Data,我用它来上传文件 我有一个表单,除了上传文件,还发送一些其他字段。为清楚起见,在本例中,我只发送一个字段: $scope.save_with_upload=函数(用户){ $scope.uploader.formData=[{ name:user.name, }]; $scope.uploader.uploadAll(); } 假设name输入的值是test1 当我第一次加载页面并单击保存时,它会发送文件,但根本不发送formData 然后我将name字段更改为test2并点击Save。它发送
$scope.save_with_upload=函数(用户){
$scope.uploader.formData=[{
name:user.name,
}];
$scope.uploader.uploadAll();
}
假设name
输入的值是test1
formData
name
字段更改为test2并点击Save。它发送文件和formData
,但是它发送的name
的值是test1name
字段更改为test3并点击Save。它发送文件和formData
,但是它发送的name
的值是test2uploadAll
之前发送分配给formData
的数据
澄清一下:如果我在调用uploadAll
之前执行了dir(user$scope.uploader.formData)
,它将在这两个字段中显示正确的最新值
我已经挣扎了几个小时,只是看不出有什么问题。有什么想法吗?将表单字段附加到
FileItem
对象,而不是FileUpload
,解决了以下问题:
uploader.onBeforeUploadItem = function(item) {
formData = [{
name: user.name,
}];
Array.prototype.push.apply(item.formData, formData);
};
原因是,实际上使用了
FileItem
上的设置。将文件添加到队列时,将FileUpload
中的设置复制到FileItem
。因此,在将文件添加到队列后对FileUpload
选项所做的任何更改都将无效。此回调将转到何处?我在控制器中试过,但没有运行。你能把它扔到视图中吗?还有为什么你不能做item.formData.push(formData)
?@bischoffingston这个代码需要放在控制器中<代码>上传程序必须是文件上传
的实例item.formData.push(formData)
和Array.prototype.push.apply(item.formData,formData)
是等效的。