在流星中上传和读/写文件

Posted

技术标签:

【中文标题】在流星中上传和读/写文件【英文标题】:Upload and read/write files in meteor 【发布时间】:2015-10-15 04:25:04 【问题描述】:

我正在尝试在流星中即时上传和读取文件。但是我没有找到任何包/教程来做到这一点,所以我尝试使用 FS 库,但我遇到了一些麻烦。

我的模板中有一个,还有一个像这样的事件:

"change .myFileUpload": function(e, tmpl) 
    e.preventDefault();
    var fileInput = tmpl.find('input[type=file]');

    console.log('test');
    // grab a list of the files selected with the file chooser
    // input
    debugger;
    console.log(fileInput);
    var theFile = new FS.File(fileInput);
    console.log(theFile);
    var rose = JSON.parse(Assets.getText(fileInput));
    Meteor.call('readTxtFile',fileInput);
    Meteor.call('readTxtFile',theFile);

readTxtFile 方法如下所示:

    readTxtFile : function(file)
    console.log(file);
    fs.readFile(file, function(err,data)
        if(err)
            throw new Error("Fail read");
        else
            console.log(data);
        
    );

但是,当我上传文件时,页面会重新加载通过参数传递的文件,url 看起来像这样:http://localhost:3000/port?myFileUpload=textfile.txt

当代码执行http://localhost:3000/port?myFileUpload=textfile.txt这一行时页面被重新加载

即使我设置了 FS.debug = true;我看不到任何错误,无论是通过客户端还是服务器日志;除了第一条日志

console.log(fileInput);
> <input type=​"file" class=​"myFileUpload">​          portTmpl.js:12 

有什么想法吗?

【问题讨论】:

大部分人使用collectionfs包:github.com/CollectionFS/Meteor-CollectionFS 如果你觉得 CollectionFS 太复杂,试试这个:github.com/VeliovGroup/Meteor-Files 我可以使用集合 FS 包,但我没有看到任何方法来读取上传的文件。而且我不明白为什么要使用集合,因为我只想写入和读取文件? 【参考方案1】:

您需要以下内容来防止窗口使用默认事件处理 drop 事件:

window.addEventListener("drop",function(ev)
  ev = ev || event;
  ev.preventDefault();
,false);

【讨论】:

以上是关于在流星中上传和读/写文件的主要内容,如果未能解决你的问题,请参考以下文章

hbase的写和读,大合并和小合并

在用FATFS操作TF卡的时候,我创建文件成功,但是写文件内容和读文件都失败,不知道为啥?

C语言文件操作

C语言文件操作

C语言文件操作

流星cfs:文件系统从ios上传到服务器导致零字节文件