我创建了一个API函数来与S3一起工作。我导入了模板招摇。部署完成后,我使用npm模块aws-api-gateway-client对Node.js项目进行了测试。将本地文件上传到API网关S3代理的正确代码
它可以很好地工作:获取桶列表,获取桶信息,获取一个项目,放入一个桶,放入一个纯文本对象,但是我被封锁了一个二进制文件。
首先,我确保ACL在S3上具有所有权限。其次,二进制支持还添加 图像/ GIF 应用/八位字节流
的代码片段如下所示。其行为如下:
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);
});;
});
});
Hi @Kannaian,谢谢你的帮助。尽管我测试的文件只有几M或几KB,但听起来API网关具有10M的这种限制,这将不符合我的要求,因为我将使用大文件。我将转向本地S3工作流程。 –