1

XHRを使用して、クライアント側からサーバー側にファイルを送信しています:

$(document).on('drop', function(dropEvent) {
    dropEvent.preventDefault();
    _.each(dropEvent.originalEvent.dataTransfer.files, function(file) {
        // ...
        xhr.open('POST', Router.routes['upload'].path(), true);
        xhr.send(file);
    });
})

ここで、この POST サーバー側に応答して、ファイルをディスクに保存します。ドキュメントは、クライアント側での処理についてのみ話しているようです。サーバー側でフックを取得する方法さえわかりません。

私が今持っているルートはこれだけです:

Router.map(function() {
    this.route('home', {
        path: '/'
    });

    this.route('upload', {
        path: '/upload',
        action: function() {
            console.log('I never fire');
        }
    });
});

connectを使用すると、次のことができます。

Connect.middleware.router(function(route) {
    route.post('/upload', function(req, res) {
        // my server-side code here
    });
});

Iron-Routerに似たものはありますか?


内部を掘り下げると、Meteor がconnectボンネットの下で使用されていることがわかりました。次のようなことができます。

WebApp.connectHandlers.use(function(req, res, next) {
    if(req.method === 'POST' && req.url === '/upload') {
        res.writeHead(200);
        res.end();
    } else next();
});

しかし、このコンテキストでユーザーを取得する方法がわかりません。

4

4 に答える 4

1

iron-router を持ってきた同じ人が、ファイル転送を行うmeteor-fileも持っています。または、独自の実装の例として使用することもできます。

于 2014-05-07T18:22:38.673 に答える
1

EJSON と通常の流星の「メソッド」を使用してファイルをアップロードすると、メソッド内でのみ表示され、サーバー側で関数を公開するため、ユーザー データにアクセスできるようになります。

このビデオチュートリアルは良いスタートになるかもしれません

また、パッケージCollectionFSはいくつかのアップロード機能を提供します。今では少し時代遅れですが、アイデアは同じままです。

于 2013-08-31T14:06:58.087 に答える