我试图用流星建立一个图像上传到亚马逊S3.感谢Hubert OG,我发现AWS-SDK让事情变得简单.
我的问题是上传的数据似乎已损坏.当我下载文件时,文件可能已损坏.可能是这样的.
将数据插入到图像src中,确实有效,并且图像的预览显示为预期,因此原始文件以及可能的数据是正确的.
我正在使用FileReader加载文件,而不是将结果数据传递给AWS-SDK putObject方法.
var file=template.find('[type=file]').files[0];
var key="uploads/"+file.name;
var reader=new FileReader();
reader.onload=function(event){
var data=event.target.result;
template.find('img').src=data;
Meteor.call("upload_to_s3",file,"uploads",reader.result);
};
reader.readAsDataURL(file);
Run Code Online (Sandbox Code Playgroud)
这是服务器上的方法:
"upload_to_s3":function(file,folder,data){
s3 = new AWS.S3({endpoint:ep});
s3.putObject(
{
Bucket: "myportfoliositebucket",
ACL:'public-read',
Key: folder+"/"+file.name,
ContentType: file.type,
Body:data
},
function(err, data) {
if(err){
console.log('upload error:',err);
}else{
console.log('upload was succesfull',data);
}
}
);
}
Run Code Online (Sandbox Code Playgroud)