如何在nodejs中从heroku服务器实现下载文件

时间:2017-04-27 16:15:40

标签: node.js heroku

我有一个nodejs应用程序,我在其中创建了项目结构。 package.jsonindex.js个文件,我希望该用户可以下载一个json文件。

这就是我的项目结构

enter image description here

我在nodejs服务器上部署了heroku个应用程序。它运行正常,能够访问index.js

我如何在此处实现功能,以便用户也可以下载swagger.json。我试图像https://heroku-address/swagger.json那样访问它,但它只显示“Hello World”

index.js

var http = require("http");

http.createServer(function (request, response) {

   // Send the HTTP header 
   // HTTP Status: 200 : OK
   // Content Type: text/plain
   response.writeHead(200, {'Content-Type': 'text/plain'});

   // Send the response body as "Hello World"
   response.end('Hello World\n');
}).listen(process.env.PORT);

1 个答案:

答案 0 :(得分:2)

让我们从定义服务器和应用程序变量开始,

var express = require('express')
var app = module.exports = express();

现在,要显示用户点击文件的标签,下面是显示链接的代码,

app.get('/', function(req, res){
   res.send('<ul>'
    + '<li> <a href="/package.json">package.json</a>.</li>'
    + '<li> <a href="/swagger.json">swagger.json</a>.</li>'
    + '</ul>');
});

现在,当用户点击上述链接之一时,将执行下面显示的代码,并将下载文件,

app.get('/:file(*)', function(req, res, next){
    var file = req.params.file
    , path = __dirname + '/' + file;

    res.download(path);
});

最后用于侦听端口的代码,

app.listen(8080);
console.log('Express started on port %d', 8080);

因此,您的完整server.js文件将如下所示,

var express = require('express')
  , app = module.exports = express();
 
app.get('/', function(req, res){
  res.send('<ul>'
    + '<li>Download <a href="/package.json">package.json</a>.</li>'
    + '<li>Download <a href="/swagger.json">swagger.json</a>.</li>'
    + '</ul>');
});

app.get('/:file(*)', function(req, res, next){
  var file = req.params.file
    , path = __dirname + '/' + file;

  res.download(path);
});

app.listen(8080);
console.log('Express started on port %d', 8080);