Javascript 无法使用Amazon S3显示图像,为什么?

Javascript 无法使用Amazon S3显示图像,为什么?,javascript,amazon-web-services,amazon-s3,Javascript,Amazon Web Services,Amazon S3,使用meteor,所以在javascript中,我尝试显示来自AmazonS3的图像。 在图像的src属性中,我将访问url放在AWS控制台提供的mage上,如果我的图像是公共的,它就会工作。 如果我在AmazonS3中不公开它,它就不起作用。 因此,我要求S3向我发送正确的URL,并将此URL提供给我的图像的src属性: var s3 = new AWS.S3(); var params = {Bucket: 'mybucket', Key: 'photoPage06_4.jpg', Expi

使用meteor,所以在javascript中,我尝试显示来自AmazonS3的图像。 在图像的src属性中,我将访问url放在AWS控制台提供的mage上,如果我的图像是公共的,它就会工作。 如果我在AmazonS3中不公开它,它就不起作用。 因此,我要求S3向我发送正确的URL,并将此URL提供给我的图像的src属性:

var s3 = new AWS.S3();
var params = {Bucket: 'mybucket', Key: 'photoPage06_4.jpg', Expires: 6000};
var url = s3.getSignedUrl('getObject', params);
console.log("URL", url);
document.getElementById('photoTest').src =url;
我有一个错误:

加载资源失败:服务器响应状态为400 (请求错误)


有人有想法吗?

这是正确的行为。如果图像在S3上设置为私有,则不能公开查看。这意味着您将无法通过将图像设置为图像标记的
src
属性或将其粘贴到浏览器的地址栏来查看图像

这是有意的,因为许多人和公司都使用它来备份文件、在内部共享文件等,所以他们需要选择将文件保密。他们创建和访问私人文件的方式是通过AWS API,而不是直接通过web


因此,要回答您的问题,您需要在S3中公开您希望在站点上显示的任何图像。

谢谢您的回答。好的,我会把我所有的图片公开发布在网站上。但这是否意味着任何人都可以下载它们?我不太喜欢它!是的,任何人都可以下载。这是无法避免的。如果在网站上显示图像,则可以下载该图像。如果无法下载,则无法显示。@yvanCoyaud不要忘记将此答案标记为正确。好的,谢谢您的回答。对不起,我找不到如何将此答案标记为正确。