【问题标题】:How do I retrieve an image uploaded to Amazon S3 via CollectionFS:S3如何检索通过 CollectionFS:S3 上传到 Amazon S3 的图像
【发布时间】:2015-04-11 21:16:24
【问题描述】:

在 Meteor 项目中,我使用 CollectionFS:S3 将图像保存到 S3 中的存储桶中。我看不到如何将它们重新加载到项目中。

我尝试使用 FSFile.url() 方法,如下面的代码所示,但它正在返回: /cfs/files/images/e6jQ4Txgvb37GisEQ/imagename.jpg?token=XXX

我期待一个 Amazon S3 网址,如 s3-eu-west-1.amazonaws.com/mybucket/myfolder/imagename.jpg

view.html:

  {{#each images}}
    URL: {{this.url}}
    <img src="{{this.url}}" alt="thumbnail">
  {{/each}}

view.js

 images: function () {
  return images.find();
 }

我在 CollectionFS github 页面上看到的所有示例都使用 url 方法,所以我不明白为什么我无法访问图像。

【问题讨论】:

  • 如果它从 /cfs 目录返回数据,你可能没有配置 S3 帐户并且你的图像保存在本地
  • 我像&lt;img src="https://s3-eu-west-1.amazonaws.com/bucket/thumbnails/images/{{_id}}-{{name}}" alt="{{name}}"&gt;一样使用它
  • 我使用的集合名称与使用 cfs:filesystem 的前一个集合名称相同。它现在正在加载,尽管返回的 url 在附加到流星应用程序 url 时是正确的。

标签: javascript meteor amazon-s3


【解决方案1】:

这对我来说是这样的。

在客户端(模板或客户端文件夹) 确保之前定义了 store 变量,并具有相应的值。应该与您在 S3 配置中定义的名称相同。示例:

store = {
  bucket: 'my bucket name',
  folder: 'folder name where files are stored'
}

定义 S3Url 函数:

FS.File.prototype.S3Url = function(storeName) {
  var self = this;
  var store = self.getCollection().storesLookup[storeName];
  var urlHost = 'https://s3.amazonaws.com/';
  var urlPath = [store.bucket, store.folder, this.copies[storeName].key].join('/');
  return urlHost + urlPath;
}

使用后如下:

{{#each images}}
    URL: {{this.S3Url}}
    <img src="{{this.S3Url}}" alt="thumbnail">
{{/each}}

希望对你有帮助。

PS。确保在 Client 中设置了 store.bucket 和 store.folder。

【讨论】:

  • 干得好。您将此 FS.File.prototype.S3Url 代码保存到哪个文件和目录?
  • 感谢 Kostanos,但我认为我应该改写我原来的评论,以便您更好地理解。关于您为扩展 FS.File 模块而编写的 S3URL 函数,您将这段代码放在哪里? (什么文件名和路径?)。很抱歉造成混乱。
【解决方案2】:

这实际上是正确的。您从服务器获取 url,服务器将其重定向到 S3 上的正确文件。

换句话说,从概念上讲,服务器充当 S3 的代理,为 S3 上的文件提供临时访问服务(因此最后是令牌)。

如果您检查图像收集服务器端(流星外壳),您会发现它指向 S3 集合中的相对路径。

如果没有正确显示图像,则有其他情况发生,但应该是 cfs 提供的 url。

【讨论】:

  • 嗯,有道理,如果我将该 url 附加到 localhost:3000,它就会加载。我现在更新了 FSCollection 名称,因为它使用的名称与之前使用的 cfs:filesystem 相同。现在很好用,谢谢。
猜你喜欢
  • 1970-01-01
  • 2014-01-31
  • 2011-11-22
  • 2012-05-17
  • 2013-08-24
  • 1970-01-01
  • 1970-01-01
  • 2013-01-12
  • 2019-09-20
相关资源
最近更新 更多