我尝试使用angular $ http。
上传文件它在Chrome中正常运行,甚至在Safari中发送请求(并且服务器有200个响应),但文件没有上传到服务器。
我也尝试使用ngUpload库,但结果相同 - 文件尚未上传到服务器。
源代码:
var formData = new FormData();
formData.append('userid', Users.getCurrentId());
formData.append('avatar', myFile); // this is File() size abput 100K
$http({
url: AppState.getApiHost()+AppState.getApiPrefix() + '/setavatar',
method: "POST",
data: formData,
headers: {'Content-Type': undefined}
})
.then(function (res) {
console.log('Success', res);
})
.catch(function (err) {
console.log('Error',err)
});
答案 0 :(得分:0)
我刚刚找到答案。问题是File()对象是使用File()构造函数创建的:
return new File([u8arr], filename, {type:mime});
但它与Safari无法正常工作。它创建File对象,其大小与文件大小相同,但实际文件为空。如果我尝试在附加到表单后发送它 - 表单已发送空文件(即使它看起来像一个非空文件)。
我已将其替换为此代码:
var the_blob = new Blob([u8arr]);
the_blob.lastModifiedDate = new Date();
the_blob.name = 'avatar.png'
return the_blob;
这对我有用