我使用以下代码将3张不同的图片上传到S3:
AWS.config.update({
accessKeyId: accessKeyId,
secretAccessKey: secretAccessKey
});
const s3Stream = require('s3-upload-stream')(new AWS.S3())
function getUploadStrm() {
return s3Stream.upload({
Bucket: awsS3Bucket,
Key: accessKeyId,
ACL: 'public-read',
StorageClass: 'REDUCED_REDUNDANCY',
ContentType: 'binary/octet-stream',
});
}
(我创建了3个上传流并分别写入每个流)。
这是我得到的信息:
detail => { Location: 'https://staging-media-assets.s3.amazonaws.com/AKIAIRNYI65C5VKWDEDQ',
Bucket: 'staging-media-assets',
Key: 'AKIAIRNYI65XC5VKWDEDQ',
ETag: '"d7165b042c4068477d03341ca75x518e1-1"' }
detail => { Location: 'https://staging-media-assets.s3.amazonaws.com/AKIAIRNYI65C5VKWDEDQ',
Bucket: 'staging-media-assets',
Key: 'AKIAIRNYI65XC5VKWDEDQ',
ETag: '"e325f4cb98e4af408e60e421e37xa4a27-1"' }
detail => { Location: 'https://staging-media-assets.s3.amazonaws.com/AKIAIRNYI65C5VKWDEDQ',
Bucket: 'staging-media-assets',
Key: 'AKIAIRNYI65XC5VKWDEDQ',
ETag: '"8a04422756e20eb9f93718422fx11dad8-1"' }
我的问题是 - 如何根据返回的信息找到上传图片的网址?
S3网站上的信息对我来说并不清楚:
http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#createMultipartUpload-property
答案 0 :(得分:1)
鉴于这些响应,您似乎每次都使用相同的Key值,因此您每次都会在S3上覆盖该文件。您似乎将AWS Access密钥作为S3密钥传递,这是不正确的。 S3键是要上载的对象的唯一ID。您需要在传递给key
的参数中为s3Stream.upload()
指定唯一值。您获得的Location
值将是S3上文件的URL。