我想在 amazon S3 上传图像文件(base64),但我不断收到此错误:
我正在构建 IONIC应用,我的代码是:
var reader = new FileReader();
reader.readAsDataURL(value);
reader.onloadend = function(e) {
console.log(this.result);
// AWS
AWS.config.update({
accessKeyId: $rootScope.config.access_key,
secretAccessKey: $rootScope.config.secret_key
});
AWS.config.region = 'us-west-2';
var bucket = new AWS.S3({ params: { Bucket: $rootScope.config.bucket } });
var params = {
Key: value.name,
ContentType: value.type,
Body: this.result,
ServerSideEncryption: 'AES256',
ACL: "public-read"
};
bucket.putObject(params, function(err, data) {
if(err) {
// There Was An Error With Your S3 Config
// alert(err.message);
console.log(JSON.stringify(err));
return false;
}
else {
// Success!
console.log('Upload Done');
}
})
.on('httpUploadProgress',function(progress) {
// Log Progress Information
console.log(Math.round(progress.loaded / progress.total * 100) + '% done');
});
值包含 dataURI 。
数据:图像/ JPEG; BASE64,/ 9J / 4AAQSkZJRgABAQAAAQABAA ..... 如何解决这个问题呢 ?
答案 0 :(得分:1)
在您的Amazon S3帐户中,转到存储桶“属性” - > “权限” - > “编辑CORS配置”
集:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
<AllowedHeader>Content-Type</AllowedHeader>
<AllowedHeader>Origin</AllowedHeader>
</CORSRule>
</CORSConfiguration>
您可以将允许的来源限制为仅限主机(例如<AllowedOrigin>
中的“http://www.example.com”而不是*
),但由于您的存储桶只能通过身份验证进行写入,因此没必要。
答案 1 :(得分:0)
我不得不使用更宽松的配置来使其工作:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>