Mic*_* Du 5 amazon-s3 amazon-web-services node.js aws-sdk aws-lambda
我正在使用react-s3-uploader节点包,它接受一个signingUrl用于获取用于将对象存储到S3中的signedUrl。
目前,我已经配置了一个 lambda 函数(带有 API 网关端点)来生成此signedUrl。经过一番修补后,我已经让它可以工作了,但注意到我必须在 lambda 函数中定义content-type,如下所示:
var AWS = require('aws-sdk');
const S3 = new AWS.S3()
AWS.config.update({
region: 'us-west-2'
})
exports.handler = function(event, context) {
console.log('context, ', context)
console.log('event, ', event)
var params = {
Bucket: 'video-bucket',
Key: 'videoname.mp4',
Expires: 120,
ACL: 'public-read',
ContentType:'video/mp4'
};
S3.getSignedUrl('putObject', params, function (err, url) {
console.log('The URL is', url);
context.done(null, {signedUrl: url})
});
}
Run Code Online (Sandbox Code Playgroud)
问题是我希望这个签名的 url 能够接受多种类型的视频文件,并且我尝试设置ContentType为video/*,但这不起作用。另外,因为这个 lambda 端点并不是实际进行上传的端点,所以我无法事先将文件类型传递给该函数。
如果其他人正在寻找有效的答案,我最终发现确实react-s3-uploader将内容类型和文件名传递给 getSignin url(除了我之前忘记在 API Gateway 中传递查询),所以我能够像 lambda 一样提取它event.params.querystring.contentType。
然后在参数中,我简单地设置{ContentType: event.params.querystring.contentType},现在它接受所有文件格式。
| 归档时间: |
|
| 查看次数: |
7071 次 |
| 最近记录: |