【发布时间】:2018-03-05 15:43:38
【问题描述】:
我创建了一个 API 函数来使用 S3。我导入了模板招摇。部署后,我用npm模块aws-api-gateway-client的Node.js项目进行了测试。
它适用于:获取存储桶列表,获取存储桶信息,获取一个项目,放置一个存储桶,放置一个纯文本对象,但是我被放置一个二进制文件阻止。
首先,我确保在 S3 上允许具有所有权限的 ACL。其次,还添加了二进制支持 图片/gif 应用程序/八位字节流
代码sn-p如下。行为是:
1) 在invokeAPI之后,回调函数没有命中,过了一段时间,Node.js项目没有响应。没有任何错误信息。文件大小(如图像)非常小。 2) 只上传了两次,似乎上传成功,但是结果文件比原始文件大(大约2M),所以文件损坏了。
你能帮帮我吗?谢谢!
var filepathname = './items/';
var filename = 'image1.png';
fs.stat(filepathname+filename, function (err, stats) {
var fileSize = stats.size ;
fs.readFile(filepathname+filename,'binary',function(err,data){
var len = data.length;
console.log('file len' + len);
var pathTemplate = '/my-test-bucket/' +filename ;
var method = 'PUT';
var params = {
folder: '',
item:''
};
var additionalParams = {
headers: {
'Content-Type': 'application/octet-stream',
//'Content-Type': 'image/gif',
'Content-Length': len
}
};
var result1 = apigClient.invokeApi(params,pathTemplate,method,additionalParams,data)
.then(function(result){
//never hit :(
console.log(result);
}).catch( function(result){
//never hit :(
console.log(result);
});;
});
});
【问题讨论】: