Download a file from NodeJS Server using Express

后端 未结 7 1588
醉梦人生
醉梦人生 2020-11-22 03:10

How can I download a file that is in my server to my machine accessing a page in a nodeJS server?

I\'m using the ExpressJS and I\'ve been trying this:



        
7条回答
  •  醉话见心
    2020-11-22 03:25

    'use strict';
    
    var express = require('express');
    var fs = require('fs');
    var compress = require('compression');
    var bodyParser = require('body-parser');
    
    var app = express();
    app.set('port', 9999);
    app.use(bodyParser.json({ limit: '1mb' }));
    app.use(compress());
    
    app.use(function (req, res, next) {
        req.setTimeout(3600000)
        res.header('Access-Control-Allow-Origin', '*');
        res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept,' + Object.keys(req.headers).join());
    
        if (req.method === 'OPTIONS') {
            res.write(':)');
            res.end();
        } else next();
    });
    
    function readApp(req,res) {
      var file = req.originalUrl == "/read-android" ? "Android.apk" : "Ios.ipa",
          filePath = "/home/sony/Documents/docs/";
      fs.exists(filePath, function(exists){
          if (exists) {     
            res.writeHead(200, {
              "Content-Type": "application/octet-stream",
              "Content-Disposition" : "attachment; filename=" + file});
            fs.createReadStream(filePath + file).pipe(res);
          } else {
            res.writeHead(400, {"Content-Type": "text/plain"});
            res.end("ERROR File does NOT Exists.ipa");
          }
        });  
    }
    
    app.get('/read-android', function(req, res) {
        var u = {"originalUrl":req.originalUrl};
        readApp(u,res) 
    });
    
    app.get('/read-ios', function(req, res) {
        var u = {"originalUrl":req.originalUrl};
        readApp(u,res) 
    });
    
    var server = app.listen(app.get('port'), function() {
        console.log('Express server listening on port ' + server.address().port);
    });
    

提交回复
热议问题