如何检索通过CollectionFS:S3上传到AmazonS3的图像
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?令牌=XXX
我期待着一个亚马逊S3网址,如S3-eu-west-1.amazonaws.commybucket/myfolder/imagename.jpg
view.html:
{{#each images}}
URL: {{this.url}}
<img src="{{this.url}}" alt="thumbnail">
{{/each}}
view.js
images: function () {
return images.find();
}
我在CollectionFSgithub页面上看到的所有示例都使用url方法,所以我看不出为什么我无法访问图像。
这就是我的工作方式。
在客户端(模板或客户端文件夹)确保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。确保store.bucket和store.folder已设置在客户端中。
这实际上是正确的。您正在从服务器获得一个url,服务器将其重定向到S3上的正确文件。
换言之,从概念上讲,服务器充当S3的代理,用于临时访问S3上的文件(因此是最后的令牌)。
如果您在服务器端检查图像集合(流星外壳),您会看到它指向S3集合中的相对路径。
如果它没有正确显示图像,就会有其他事情发生,但它应该使用cfs提供的url。
相关文章:
- Amazon S3 REST API大小不正确
- 如何在Javascript/ES6中的Aurelia浏览器应用程序中使用AWS S3
- 为什么使用AWS Signature v4对S3的REST调用并没有真正使用签名过程
- S3文件上传文件对象使用节点js
- Meteor和S3:如何通过一次上传/编辑定义三个不同的图像
- 使用CloudFront和AmazonS3,或者其他CDN,我可以将所有类似的请求发送到一个静态文件中
- 如何使用JS检查AWS S3上是否存在动态创建的文件
- 如何在aws S3 javascript SDK中配置interval和max_attempts
- javascript将对象数组转换为字符串以存储在s3中
- 蒸发js和s3的php签名url
- 如何通过NodeJS将文件上传到S3并在浏览器中跟踪进度
- 流星:无法使用 CollectionFS 将图像上传到 S3
- AWS S3 JavaScript 开发工具包 getSignedUrl 仅返回基本路径
- 编校.js S3 上传问题
- S3 PUT没有't使用javascript中的预签名URL
- 如何使用Angular$http.jsonp从S3加载JSON文件
- AWS JS S3:什么是'流'在ManagedUpload中
- 如何检索通过CollectionFS:S3上传到AmazonS3的图像
- amazons3-只使用Javascript将大的JSON字符串转储到s3
- amazons3-aws-sdk for javascript是否支持多部分"下载“;从S3开始