cfs s3上传的工作原理

时间:2015-02-14 07:27:49

标签: meteor amazon-s3

我以前使用slingshot并且过程非常简单:我们上传图片并返回s3存储桶的上传网址。

现在我想调整图像大小并需要对图像执行一些操作,因此我切换到cfs:s3包。但是当我尝试上传图片时,它会返回一些没有网址的记录,而在数据库中它会将其存储为:

{
    "_id" : "Rwa7Xo65pv6cAP2aY",
    "copies" : {
        "thumbs" : {
            "name" : "306032-facebook.jpg",
            "type" : "image/jpeg",
            "size" : 4262,
            "key" : "thumbs/Rwa7Xo65pv6cAP2aY-306032-facebook.jpg",
            "updatedAt" : ISODate("2015-02-14T06:44:04.476Z"),
            "createdAt" : ISODate("2015-02-14T06:44:04.476Z")
        }
    },
    "original" : {
        "name" : "306032-facebook.jpg",
        "updatedAt" : ISODate("2015-01-30T09:48:58.000Z"),
        "size" : 4262,
        "type" : "image/jpeg"
    },
    "uploadedAt" : ISODate("2015-02-14T06:43:59.062Z")
}
  • 如何从此记录中获取网址? (我猜大概是key)是否将我的服务器网址链接到亚马逊s3网址?

  • 此方法优于slingshot

  • 有什么优势
  • 我如何知道上传完成?我无法找出任何ui助手,是否有任何反应助手来跟踪下载百分比?

1 个答案:

答案 0 :(得分:0)

  1. 网址将是您的s3终点(例如s3-us-west-2.amazonaws.com/)+密钥。我建议你为你的终点创建一个常量,并为寄存器帮助器返回URL。
  2. 像这样的东西

    Template.registerHelper('THUMBS_URL', function(key){
      return S3_ENDPOINT + key;
    })
    
    1. 我还没有使用过弹弓,所以无法评论它。

    2. collectionFS中有一个isUploaded helper函数。

    3. https://github.com/CollectionFS/Meteor-CollectionFS#isuploaded