Javascript 重命名node.js中的静态文件后,如何为其提供服务?

Javascript 重命名node.js中的静态文件后,如何为其提供服务?,javascript,node.js,koa,node-static,Javascript,Node.js,Koa,Node Static,我正在创建一个node.js应用程序,用户可以在其中上传文件,以后可以下载。 我正在mongodb文档中存储文件信息(用户上载的原始文件名,…),并将该文件命名为与mongodb文档id相同的文件。现在我希望我的用户能够使用原始文件名下载该文件 我想知道的是用户何时在上发送GET请求 用户获取一个名为myOriginalfile.ext的文件 我知道节点静态和其他模块,但我不能在发送文件之前重命名它们 我使用的是KOA.JS框架。这里有一个简单的例子: 简言之: 这些文件使用MongoDB i

我正在创建一个node.js应用程序,用户可以在其中上传文件,以后可以下载。 我正在mongodb文档中存储文件信息(用户上载的原始文件名,…),并将该文件命名为与mongodb文档id相同的文件。现在我希望我的用户能够使用原始文件名下载该文件

我想知道的是用户何时在上发送GET请求 用户获取一个名为myOriginalfile.ext的文件

我知道节点静态和其他模块,但我不能在发送文件之前重命名它们


我使用的是KOA.JS框架。

这里有一个简单的例子:

简言之:

  • 这些文件使用MongoDB id作为文件名存储在
    /static
  • 用户请求
  • 在MongoDB中查找该ID以查找原始文件名(在上面的示例中,文件名只是硬编码为
    test.txt
  • 文件
    /static/123456
    使用
    内容配置
    标题中设置的原始文件名作为下载提供(通过使用
    此.attachment(filename)
    ),这将使浏览器将其本地存储为
    test.txt

    • 以下是一个简单的示例:

      简言之:

      • 这些文件使用MongoDB id作为文件名存储在
        /static
      • 用户请求
      • 在MongoDB中查找该ID以查找原始文件名(在上面的示例中,文件名只是硬编码为
        test.txt
      • 文件
        /static/123456
        使用
        内容配置
        标题中设置的原始文件名作为下载提供(通过使用
        此.attachment(filename)
        ),这将使浏览器将其本地存储为
        test.txt

      感谢您的回复。我在这方面花了6个小时。这也是我关于stackoverflow的第一个问题,所以没想到会有这么快的回复。谢谢你的回复谢谢你的回复我坚持了6个小时。这也是我关于stackoverflow的第一个问题,所以没想到会有这么快的回复。谢谢你的回复谢谢你的回复我坚持了6个小时。这也是我关于stackoverflow的第一个问题,所以没想到会有这么快的回复。非常感谢。
      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);