0

仍然是异步 javascript 编码的新手,我正试图围绕这个要点:https ://gist.github.com/dariocravero/3922137

在 client_save.file.js - 我不理解这个存根的所有部分:

fileReader.onload = function(file) {
    Meteor.call('saveFile', file.srcElement.result, name, path, encoding);
}

首先,函数(文件)中的参数没有定义——“文件”在哪里?!或者“闭包”是否有一些魔法可以将值返回给文件参数?

其次,Meteor.call 不会触发,我将 console.logs 放在了 Meteor.methods 版本的 saveFile 中,然后得到 nada。是因为 fileReader.onload = function( ... 不是存根吗?

最后,什么是 fileReader.onload?它是否说明 DOM 何时加载任何 fileReader 尝试,然后调用此函数?有没有更好的方法在流星中做到这一点,使用类似 Meteor.template.rendered = function() .. 的东西?

无论如何,我现在正式扭曲了,看了几个小时都分不清上下。正式地,按照那个要点,我无法触发 Meteor.call。

(使用流星 0.6.31)。

4

1 回答 1

2

您必须使用更多代码。fileReader 是 HTML5 api,它可以读取您放入<input type="file"或拖放到窗口中的文件。因此,当一个文件被加载到浏览器中时,它fileReader.onload被调用file为加载到浏览器中的文件。

看起来要点类似于Meteor-File大气存储库上的一个包。但并非所有代码都存在于该要点中。幸运的是,建造它的 Chris Mather 制作了视频广播,深入解释了它是如何制作的:http ://www.eventedmind.com/posts/meteor-build-a-file-upload-package

于 2013-06-05T09:11:06.893 回答