【问题标题】:showing thumbnail/pictures from S3 after authentification验证后显示来自 S3 的缩略图/图片
【发布时间】:2013-02-07 19:28:11
【问题描述】:

我是 S3 的新手。我对 s3 的理解是浏览器请求图像,然后服务器必须连接到 s3 获取图像,就好像它是一个文件系统一样,获取流并将输出发送到浏览器。我想知道是否有一种方法可以直接提供 s3 存储桶/图像的 url,但这必须在身份验证之后并且必须有时间限制,以便在一段时间后您应该能够再次访问图像。

上传也是如此。文件名等上传详细信息必须发送到服务器,但图像进入 s3 并且成功/错误在服务器中更新。这可能吗。我打算在服务器上使用nodejs

我听说过 knox,但不确定它适合这个。

【问题讨论】:

    标签: node.js express amazon-s3 knox-amazon-s3-client


    【解决方案1】:

    您对 S3 的理解不完整。

    下载时:可以(但没有必要)让服务器从 S3 中检索图像(或其他文件),“就好像它 [S3] 是一个文件系统一样”或通过 HTTP,然后将其中继到客户端。这不仅没有必要,而且可以说是对带宽和服务器资源的浪费,而且几乎肯定会增加延迟。

    如果不需要保护图像,那么您只需使用指向适当的 S3 端点+存储桶+对象(或存储桶+端点+对象)的链接 - 大多数情况下,URL 可以通过两种不同的方式构建时间)。

    来自documentation

    存储桶是存储在 Amazon S3 中的对象的容器。每个对象都包含在一个桶中。例如,如果名为 photos/puppy.jpgobject 存储在 johnsmith bucket 中,那么它是可使用 URL http://johnsmith.s3.amazonaws.com/photos/puppy.jpg寻址

    您也可以使用https

    另一方面,如果您想防止未经授权访问该文件,您可以将存储桶配置为不允许公共访问,并通过在您的 Web 服务器上生成签名 URL 来使用 query string authentication,这为用户的浏览器提供即将到期的临时凭证,如下所示:

    http://johnsmith.s3.amazonaws.com/photos/puppy.jpg?AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv4%3D
    

    在到期时间(您选择的值)之后,此 URL 将不再有效。不,更改“到期”值不会使其工作。 :)

    当然,下次用户访问您的网站时,您的服务器将为同一图像生成一个新的签名 URL,供浏览器在后续会话期间使用。


    还解释了上传过程in the documentation。同样,这两种方法都是可能的。

    您的网站可以制作包含授权和身份验证详细信息的 HTML 表单,允许浏览器将文件直接发布到 S3,然后在上传完成后将浏览器重定向回您的站点(在您指定的 URL)并指示成功或失败...或者您可以让浏览器像往常一样将文件上传到 Web 服务器,然后 Web 服务器可以代理或以其他方式将其传输到 S3。


    我不熟悉 knox,但它似乎是一个库,提供了一种方法来完成部分或全部这些事情。

    【讨论】:

      猜你喜欢
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 2014-12-13
      • 1970-01-01
      • 2014-06-24
      • 2023-01-19
      • 1970-01-01
      相关资源
      最近更新 更多