2017-05-30 92 views
0

流星,所以在javascript中,我尝试显示来自AMAZON S3的图像。 在图像的src属性中,我将访问网址放在AWS控制台提供的图像中,如果我的图像是公开的,它就可以工作。 如果我在AMAZON S3中公开,它不起作用。 那么请问S3给我正确的URL,我提供了这个网址,我的形象的src属性:无法使用Amazon S3显示图像,为什么?

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; 

在那里我有错误:

Failed to load resource: the server responded with a status of 400 (Bad Request)

是否有人有一个想法?

回答

0

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

这是故意的,因为许多人和公司用它来备份文件,共享文件内部等,所以他们需要的选项,以保持自己的私人文件。他们创建和访问私人文件的方式是通过AWS API,而不是直接通过网络。

因此,要回答你的问题,你需要让你想显示在S3网站公开的任何图像。

+0

谢谢您的回复。 好的,我会把所有的图片公开发布到网站上。但这是否意味着任何人都可以下载它们? 我不喜欢它太多! –

+0

是的,任何人都可以下载它们。没有办法阻止。如果图像显示在网站上,则可以下载。如果它不可下载,则不可显示。 – Soviut

+0

@yvanCoyaud不要忘记,以纪念这个答案正确。 – Soviut