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);
}

まず、function(file) の引数が定義されていません。「file」はどこですか?! または、ファイル引数に値を返す「クロージャー」を備えた魔法はありますか?

第二に、Meteor.call がトリガーされないため、saveFile の Meteor.methods バージョン内に console.logs を配置し、nada を取得します。fileReader.onload = function( ... がスタブではないからですか?

最後に、fileReader.onload とは何ですか? DOMがfileReaderがしようとしているものをロードしてから、この関数を呼び出すと言っていますか? Meteor.template.rendered = function() .. のようなものを使用して、流星でこれを行うより良い方法はありますか?

とにかく、私は今公式にひねられており、これを数時間見ていると上から下まで見分けることができません. 公式には、その要点に従って Meteor.call をトリガーすることはできません。

(流星0.6.31を使用)。

4

1 に答える 1

2

より多くのコードを使用する必要があります。<input type="file"fileReader は、ウィンドウに配置したり、ウィンドウにドラッグ アンド ドロップしたりするファイルを読み取ることができる HTML5 API です。そのため、ファイルがブラウザにロードされると、ブラウザにロードされたファイルとしてfileReader.onloadが呼び出されfileます。

要点は、大気リポジトリのパッケージであるMeteor-Fileに似ているようです。しかし、すべてのコードがその要旨に含まれているわけではありません。幸いなことに、それを構築した Chris Mather が、それがどのように作成されたかを詳細に説明するビデオキャストを作成しました: http://www.eventedmind.com/posts/meteor-build-a-file-upload-package

于 2013-06-05T09:11:06.893 に答える