[英]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.