流星如何通过Rest API将图像上传到AWS S3?

时间:2019-07-19 12:49:03

标签: api meteor postman

我正在使用api在AWS s3上上传图像。首先我需要将图像保存到AWS,然后需要将URL保存到mongo数据库。但是当我尝试上传图像时遇到此错误。我在clinet端使用lepozepo:s3库,并希望在服务器端使用相同的库。我下面提到的代码与lepozepo库一起使用。 http://prntscr.com/ohareb

 Meteor.call('uploadProfilePic', this.request.body, function (error, resp) {

    if (error) {
       response = {
          "errorCode": true,
         "statusMessage": error.message,
        } 

    }else{
        response = {
        "errorCode": false,
        "statusMessage": "Picture uploaded successfully",
      }
    }

});

this.response.setHeader('Content-Type', 'application/json');
this.response.end(JSON.stringify(response));

});

在方法中,我创建了此方法。

 uploadProfilePic:function(image){
  var files = image;
  userId = "MMKKK79KQ7eMs6777Hh";
  import {S3} from "meteor/lepozepo:s3";

  console.log(files);

  S3.uploadFile({ 
    files:files,
    path:"avatars"
  },function(e,r){
    if (!e) {
      var $set={};
      $set[templ.data.picType]=r.secure_url;
      Meteor.users.update({
        _id: userId
      }, {
        $set: $set
      }, function(err) {
        if (!err) {
          console.log( "Image uploaded");
        } else {
          console.log("Error updating image");
        }
      });
    } else {
      console.log( "Error updating image");
    }
});

 }

1 个答案:

答案 0 :(得分:0)

我维护此软件包:https://github.com/activitree/s3up-meta。 有了它,您可以向S3上传文件或从S3删除文件。您还可以设置用于缓存的元数据并使其过期,无论如何您都可以从Cloudfront CDN覆盖元数据(以防您通过Cloudfront分发映像)。 该程序包基于AWS sdk,所有请求均由Meteor服务器签名,但是文件直接从客户端移至S3。 如果需要,请在Git上打开一个问题。 干杯