1

ユーザーがファイルをアップロードして後でダウンロードできる node.js アプリを作成しています。ファイル情報(ユーザーがアップロードした元のファイル名など)をmongodbドキュメントに保存し、そのファイルにmongodbドキュメントIDと同じ名前を付けています。今、ユーザーがそのファイルを元のファイル名でダウンロードできるようにしたいと考えています。

私が知りたいのは、ユーザーがhttp://myapp.com/mongoDocument_Idで GET リクエストを送信すると、 ユーザーが myOriginalfile.ext という名前のファイルを取得することです。

node-static およびその他のモジュールについては知っていますが、ファイルを送信する前にそれらの名前を変更できません。

私はkoa.jsフレームワークを使用しています。

4

1 に答える 1

0

を使用した簡単な例を次に示しkoa-file-serverます。

var app   = require('koa')();
var route = require('koa-route');
var send  = require('koa-file-server')({ root : './static' }).send;

app.use(route.get('/:id', function *(id) {
  // TODO: perform lookup from id to filename here.

  // We'll use a hardcoded filename as an example.
  var filename = 'test.txt';

  // Set the looked-up filename as the download name.
  this.attachment(filename);

  // Send the file.
  yield send(this, id);
}));

app.listen(3012);

要するに:

  • ファイルは./static、MongoDB id をファイル名として使用して保存されます
  • ユーザーがhttp://myapp.com/123456を要求します
  • MongoDB でその ID を調べて、元のファイル名を見つけます (上記の例では、ファイル名は にハードコードされているだけですtest.txt) 。
  • ファイルは、ヘッダー./static/123456に設定された元のファイル名を使用してダウンロードとして提供されます(を使用) 。Content-Dispositionthis.attachment(filename)test.txt123456
于 2015-06-10T10:54:09.643 に答える