我在哪里可以获取Meteor Files中的上传文件?

时间:2016-12-12 01:31:02

标签: javascript reactjs meteor

我正在使用Meteor和React JS。我还添加了Meteor Files。

https://github.com/VeliovGroup/Meteor-Files

使用此代码,

this.Images = new FilesCollection({collectionName: 'Images'});
export default class Logo extends TrackerReact(React.Component){
    constructor(){
    ...
    Meteor.subscribe('files.images.all');
    }
uploadLogo(e){
    if (e.currentTarget.files && e.currentTarget.files[0]) {
      // We upload only one file, in case 
      // there was multiple files selected
      var file = e.currentTarget.files[0];
      if (file) {
        var uploadInstance = Images.insert({
          file: file,
          streams: 'dynamic',
          chunkSize: 'dynamic',
          transport: 'http'
        }, false);

        uploadInstance.on('start', function() {
          //template.currentUpload.set(this);
        });

        uploadInstance.on('end', function(error, fileObj) {
          if (error) {
            alert('Error during upload: ' + error.reason);
          } else {
              console.log("done");
            alert('File "' + fileObj.name + '" successfully uploaded');
          }
        });
        uploadInstance.start();
      }

    }else{
        console.log("error");
    }
}
render(){
...
<input type="file" id="fileinput" onChange={this.uploadLogo.bind(this)} />
}

我可以上传文件,但是我的目录中没有看到任何文件。 这是我的publish.js,

this.Images = new Meteor.Files({
  debug: true,
  collectionName: 'Images',
  allowClientCode: false, // Disallow remove files from Client
  onBeforeUpload: function (file) {
    // Allow upload files under 10MB, and only in png/jpg/jpeg formats
    if (file.size <= 1024*1024*10 && /png|jpg|jpeg/i.test(file.extension)) {
      return true;
    } else {
      return 'Please upload image, with size equal or less than 10MB';
    }
  }
});
Meteor.publish('files.images.all', function () {
    return Images.find().cursor;
  });

如何显示图像?如何限制用户上传仅为图像的文件?

对我来说,他们的API文档并不丰富。我无法理解他们在文档中谈论的内容。

1 个答案:

答案 0 :(得分:1)

默认情况下,上传的文件存储在文件系统中。阅读常见问题:

  

默认情况下存储的文件在哪里?:默认情况下为config.storagePath   没有传递给Constructor,它等于assets / app / uploads和   相对于运行脚本:

     
      
  • 在开发阶段:   yourDevAppDir / .meteor / local / build / programs / server
  •   
     

注意:所有文件   将在应用程序重建或运行meteor后立即删除   重启。要在开发过程中保持存储的持久性,请使用   项目文件夹之外的绝对路径,例如/ data目录。

     
      
  • 在制作时:yourProdAppDir / programs / server
  •   

因此您需要使用 config.storagePath

设置位置