Javascript AngularJS 1.x:文件上载失败:传输期间未定义文件对象
当我试图通过rest/json上传文件时,我得到一个Javascript AngularJS 1.x:文件上载失败:传输期间未定义文件对象,javascript,angularjs,Javascript,Angularjs,当我试图通过rest/json上传文件时,我得到一个400错误。我发现我的内容在文件上载rest请求期间未定义,但它是在读取器.readAsArrayBuffer之前定义的 我试图做的是将文件作为BASE64编码字符串传递。我有一种感觉,在目前的情况下,我做得不对 这里是上传的功能 $scope.uploadFile = function() { $scope.files.forEach(function(file) { var reader =
400
错误。我发现我的内容在文件上载rest请求期间未定义,但它是在读取器.readAsArrayBuffer
之前定义的
我试图做的是将文件作为BASE64
编码字符串传递。我有一种感觉,在目前的情况下,我做得不对
这里是上传的功能
$scope.uploadFile = function() {
$scope.files.forEach(function(file) {
var reader = new FileReader();
var fileObject = {
'documentCase': {
'id': successResponse.data.documentCase.id,
'code': successResponse.data.documentCase.code
},
'code': successResponse.data.documentCase.code,
'content': reader.readAsArrayBuffer(document.getElementById(file.id).files[0]),
'name':'hi',
'description':'hi'
};
$http.post (webserviceUrl + documentCaseFileCreate, fileObject, {
headers: {
'Content-Type': 'application/json'
}
}).then(function successCallback(response) {
console.log('file transfer ok');
console.log(response);
}, function errorCallback(response) {
console.error('file transfer error');
console.log(response);
});
});
};
提前感谢您的帮助 我必须将post调用移动到函数中,该函数仅在文件加载后触发:
$scope.uploadFile = function(file) {
var reader = new FileReader();
reader.readAsBinaryString(document.getElementById(file.id).files[0]);
reader.onload = function() {
var fileObject = {
'documentCase': {
'id': successResponse.data.documentCase.id,
'code': successResponse.data.documentCase.code
},
'code': successResponse.data.documentCase.code,
'content': btoa(reader.result),
'name':'tere',
'description':'tere'
};
$http.post(webserviceUrl + documentCaseFileCreate, fileObject, {
headers: {
'Content-Type': 'application/json'
}
}).then(function successCallback(response) {
uploadedFile = {
'fileData': document.getElementById(file.id).files[0],
'responseData': response
};
console.log('uploadedFile');
console.log(uploadedFile);
$scope.uploadedFiles.push(uploadedFile);
$scope.files.splice(file.);
}, function errorCallback(response) {
console.error('file transfer error');
console.log(response);
});
};
reader.onerror = function() {
console.error('error reading file');
};
};
你能读懂文件吗?你确定?只需测试文件读取function@BurakAky这行代码100%工作document.getElementById(file.id).files[0]
reader.readAsArrayBuffer(document.getElementById(file.id).files[0]的结果是什么
?@BurakAkyıldızdeps.js?bust=7.6.0:40732错误:无法在“FileReader”上执行“readAsArrayBuffer”:对象已在忙于读取blob。
尝试只发送一个文件,并在发送之前完全读取其内容。是否可以readAsArrayBuffer
op异步工作?