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 回答