簡體   English   中英

如何檢索通過CollectionFS:S3上傳到Amazon S3的圖像

[英]How do I retrieve an image uploaded to Amazon S3 via CollectionFS:S3

在Meteor項目中,我正在使用CollectionFS:S3將圖像保存到S3中的存儲桶中。 我看不到如何將它們重新加載到項目中。

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

我期待像s3-eu-west-1.amazonaws.com/mybucket/myfolder/imagename.jpg中的Amazon S3網址。

view.html:

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

view.js

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

我可以在CollectionFS github頁面上看到的所有示例都使用url方法,因此看不到為什么我無法訪問圖像。

這對我有用。

在客戶端(模板或客戶端文件夾)中,請確保存儲變量是在之前定義的,並且具有相應的值。 名稱應與您在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。 確保在客戶端中設置了store.bucket和store.folder。

這是正確的。 您從服務器獲取一個URL,服務器將其重定向到S3上的正確文件。

換句話說,從概念上講,服務器充當S3的代理,該服務器提供對S3上文件的臨時訪問(因此在末尾有令牌)。

如果檢查圖像收集服務器端(流星外殼),您會發現它指向S3集合中的相對路徑。

如果未正確顯示圖像,則可能有其他情況發生,但是應該使用cfs提供的網址。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM