使用CollectionFS和cfs-s3流星包的AWS S3存储桶上传

zakir2k

我将Meteor.js与Amazon S3 Bucket一起用于上传和存储照片。我正在使用陨石包装collectionFS和aws-s3。我已经正确设置了aws-s3连接,并且图像收集工作正常。

客户端事件处理程序:

     'click .submit': function(evt, templ) {
        var user = Meteor.user();
        var photoFile = $('#photoInput').get(0).files[0];

        if(photoFile){

        var readPhoto = new FileReader();

        readPhoto.onload = function(event) {
            photodata = event.target.result;
            console.log("calling method");
            Meteor.call('uploadPhoto', photodata, user);
        };
      }

而我的服务器端方法:

 'uploadPhoto': function uploadPhoto(photodata, user) {

      var tag = Random.id([10] + "jpg");
      var photoObj = new FS.File({name: tag});
      photoObj.attachData(photodata);
      console.log("s3 method called");

      Images.insert(photoObj, function (err, fileObj) {
        if(err){
          console.log(err, err.stack)
        }else{
          console.log(fileObj._id);
        }
      });

选定的文件是.jpg图像文件,但是在上传时,我在服务器方法中收到此错误:

调用方法“ uploadPhoto”时发生异常错误:DataMan构造函数收到了不支持的数据

而且无论我是直接传递图像文件,还是将其作为数据附加或使用fileReader读取为文本/二进制/字符串。我仍然收到该错误。请指教。

Chaosbohne

好吧,也许有些想法。几个月前,我已经使用collectionFS做过事情,所以请多加注意文档,因为我的示例可能不是100%正确的。

凭据应通过环境变量设置。因此,您的密钥和机密仅在服务器上可用。检查此链接以进一步阅读。

好的,首先,这是一些对我有用的示例代码。检查您的差异。

模板助手:

'dropped #dropzone': function(event, template) {
  addImage(event);
}

功能addImage:

function addImagePreview(event) {
  //Go throw each file,
  FS.Utility.eachFile(event, function(file) {    

    //Some Validationchecks
    var reader = new FileReader();

    reader.onload = (function(theFile) {
      return function(e) {

        var fsFile = new FS.File(image.src);

        //setMetadata, that is validated in collection
        //just own user can update/remove fsFile
        fsFile.metadata = {owner: Meteor.userId()};           

        PostImages.insert(fsFile, function (err, fileObj) {
          if(err) {
            console.log(err);
          }
        });         
      };
    })(file);

    // Read in the image file as a data URL.
    reader.readAsDataURL(file);          
  });   
}

好的,您接下来要进行验证。可以使用允许/拒绝规则以及FS.Collection上的过滤器来完成验证。这样,您可以进行所有验证并通过客户端插入。

例:

PostImages = new FS.Collection('profileImages', {
  stores: [profileImagesStore],
  filter: {
    maxSize: 3145728,
    allow: {
      contentTypes: ['image/*'],
      extensions: ['png', 'PNG', 'jpg', 'JPG', 'jpeg', 'JPEG']
    }
  },
  onInvalid: function(message) {
    console.log(message);
  }
});


PostImages.allow({
  insert: function(userId, doc) {
    return (userId && doc.metadata.owner === userId);
  },
  update: function(userId, doc, fieldNames, modifier) {
    return (userId === doc.metadata.owner);
  },
  remove: function(userId, doc) {
    return false;
  },
  download: function(userId) {
    return true;
  },
  fetch: []
});

在这里您将找到另一个示例,单击

另一个错误点可能是您的AWS配置。您是否已完成此处编写的所有内容

基于此后单击,似乎当FS.File()的构造不正确时,会发生此错误。因此,也许这应该是您入门的第一条方法。

很多阅读,所以我希望这对您有帮助:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用CollectionFS和cfs-s3流星包的AWS S3存储桶上传

来自分类Dev

使用Carrierwave上传到多个S3存储桶

来自分类Dev

使用NodeJS和AWS S3将损坏/截断的mp4上传到S3存储桶

来自分类Dev

使用NodeJS和AWS S3将损坏/截断的mp4上传到S3存储桶

来自分类Dev

使用aws-sdk-java上传到S3存储桶时发生PermanentRedirect错误

来自分类Dev

使用Java AWS SDK将文件夹上传到S3存储桶

来自分类Dev

使用作业队列上传到AWS S3存储桶

来自分类Dev

使用aws-sdk-java上传到S3存储桶时发生PermanentRedirect错误

来自分类Dev

通过使用分段上传API将小于5 MB的文件上传到AWS S3存储桶

来自分类Dev

使用Boto3将文件上传到带前缀的S3存储桶

来自分类Dev

使用PHP SDK列出AWS S3存储桶

来自分类Dev

无法使用Boto连接AWS S3存储桶

来自分类Dev

无法使用Boto连接AWS S3存储桶

来自分类Dev

如何使用boto3将Github上的文件上传到AWS S3存储桶?

来自分类Dev

Amazon S3存储桶策略,用于上传和查看图片

来自分类Dev

使用 PHP 将文件上传到 Amazon S3 存储桶 - 不使用 SDK

来自分类Dev

如何在使用Cloudfront上传的S3存储桶中获取文件?

来自分类Dev

无法使用图片的直接网址将图片上传到S3存储桶

来自分类Dev

使用API在Amazon S3存储桶中创建文件夹/上传文件

来自分类Dev

如何在使用Cloudfront上传的S3存储桶中获取文件?

来自分类Dev

使用boto将csv文件上传到Amazon S3存储桶

来自分类Dev

使用java filechooser在亚马逊s3存储桶中上传多个文件

来自分类Dev

如何使用Salesforce Apex将更大的文件(大于12 MB)上传到AWS s3存储桶

来自分类Dev

如何使用AWS CDK中的自定义资源将文件上传到S3存储桶

来自分类Dev

您尝试访问的存储桶必须使用指定的终结点进行寻址将文件上传到AWS S3

来自分类Dev

使用aws cli将S3对象URL上传到存储桶后,如何获取?

来自分类Dev

如何在使用出站网关上传文件之前检查 aws s3 存储桶是否可用

来自分类Dev

AWS S3 存储桶访问错误和存储桶显示旧文件

来自分类Dev

在AWS S3存储桶上上传失败的通知

Related 相关文章

  1. 1

    使用CollectionFS和cfs-s3流星包的AWS S3存储桶上传

  2. 2

    使用Carrierwave上传到多个S3存储桶

  3. 3

    使用NodeJS和AWS S3将损坏/截断的mp4上传到S3存储桶

  4. 4

    使用NodeJS和AWS S3将损坏/截断的mp4上传到S3存储桶

  5. 5

    使用aws-sdk-java上传到S3存储桶时发生PermanentRedirect错误

  6. 6

    使用Java AWS SDK将文件夹上传到S3存储桶

  7. 7

    使用作业队列上传到AWS S3存储桶

  8. 8

    使用aws-sdk-java上传到S3存储桶时发生PermanentRedirect错误

  9. 9

    通过使用分段上传API将小于5 MB的文件上传到AWS S3存储桶

  10. 10

    使用Boto3将文件上传到带前缀的S3存储桶

  11. 11

    使用PHP SDK列出AWS S3存储桶

  12. 12

    无法使用Boto连接AWS S3存储桶

  13. 13

    无法使用Boto连接AWS S3存储桶

  14. 14

    如何使用boto3将Github上的文件上传到AWS S3存储桶?

  15. 15

    Amazon S3存储桶策略,用于上传和查看图片

  16. 16

    使用 PHP 将文件上传到 Amazon S3 存储桶 - 不使用 SDK

  17. 17

    如何在使用Cloudfront上传的S3存储桶中获取文件?

  18. 18

    无法使用图片的直接网址将图片上传到S3存储桶

  19. 19

    使用API在Amazon S3存储桶中创建文件夹/上传文件

  20. 20

    如何在使用Cloudfront上传的S3存储桶中获取文件?

  21. 21

    使用boto将csv文件上传到Amazon S3存储桶

  22. 22

    使用java filechooser在亚马逊s3存储桶中上传多个文件

  23. 23

    如何使用Salesforce Apex将更大的文件(大于12 MB)上传到AWS s3存储桶

  24. 24

    如何使用AWS CDK中的自定义资源将文件上传到S3存储桶

  25. 25

    您尝试访问的存储桶必须使用指定的终结点进行寻址将文件上传到AWS S3

  26. 26

    使用aws cli将S3对象URL上传到存储桶后,如何获取?

  27. 27

    如何在使用出站网关上传文件之前检查 aws s3 存储桶是否可用

  28. 28

    AWS S3 存储桶访问错误和存储桶显示旧文件

  29. 29

    在AWS S3存储桶上上传失败的通知

热门标签

归档