0

型号代码:

ProfileImage = new FS.Collection('profileImage', {
  stores: [
    new FS.Store.FileSystem('profile-image')
  ],
  filter: {
    maxSize: 524288,
    allow: {
      extensions: ['png', 'jpg', 'jpeg'],
      contentTypes: ['image/png', 'image/jpg', 'image/jpeg']
    }
  }
});

插入代码:

ProfileImage.insert('http://graph.facebook.com/' + user.services.facebook.id + '/picture/?type=large', function(error, imageObj) {
  console.log(imageObj);
});

使用该代码,我得到一个像这样的文件名:profileImage-iiGE2ouSifuu3iLjq-undefined
该名称未定义,根本没有扩展名。

4

1 回答 1

0

试试这个(从我的一个项目复制。这个工作):

//this is the event for when you select an image
'change .yourfileinput': function (event, template) {
        FS.Utility.eachFile(event, function (file) {
            var yourFile = new FS.File(file);
            Images.insert(yourFile, function (err, fileObj) {
                var fileUrl = '/cfs/files/profile-image/'+fileObj._id;
                Session.set('fileUrl', fileUrl);
        });    
    });
},

//form submit event
"submit .your-form-class": function (event) {
    var whichUser = Meteor.userId() //or you could just write this inside the method call instead of adding a variable
    var profilePicture = Session.get('fileUrl');
    Meteor.call("yourMethod", whichUser, profilePicture);
}

当然,您需要玩它/根据您的需要进行定制。^ 用于 cfs:filesystem 的默认文件路径。

不过我切换到了gridfs,我强烈推荐它。

如果它不起作用,请使用您的所有代码编辑您的问题,我们会找到解决方案。文件上传是我一路上遇到的最大问题。

于 2015-12-21T05:27:04.113 回答