node.js - 如何在nodejs中的单个服务调用中上传和下载文件?

标签 node.js file-upload download formidable

我可以通过 postman 上传文件并在两个不同的服务中从服务器下载文件..但我需要的是..在一次调用中我应该能够将文件上传到服务器,然后在执行一些操作后执行一些操作我应该能够自动下载文件。 这是我的代码。

我的第一个服务(文件上传操作)

  var express = require('express');
  var fs = require('fs');
  var formidable = require('formidable');
  var router = express.Router();
  /* GET home page. */
  router.post('/', function(req, res, next) {

  var form = new formidable.IncomingForm();
  form.uploadDir="./file"
  form.keepExtensions=true;
  form.maxFileSize=10*1024*1024;
  form.multiples=false;
  form.parse(req, function (err, fields, files) {
  res.write('File uploaded');
  res.end();
  });
  });
  module.exports = router;  

下载服务

var express = require('express');
var router = express.Router();
var express = require('express');


router.get('/', function(req, res, next) {
    var file = './file/myOutput.txt';
      var name = 'ENC.txt'
      res.download(file, name);
});

module.exports = router;

现在我需要将这两个服务合而为一?

最佳答案

var express = require('express');
var formidable = require('formidable');

var app=express();

async function calculation(parameters)
{
    if(parameters)
    {
         //Here you can do calculation depending upon parameter values
    }
    else
    {
         //Display error or as per your choice
    }
}

app.get('/',function(req,res){
    res.sendFile(__dirname+'/index.html');
});
async function cal(res,file,form)
        {
            try{

                    const data = await calculation(true)
                    if(data){
                        res.set({
                            'Location' : __dirname+'/index.html',
                        });
                        res.download( __dirname+file.name);
                    }

            }
            catch(error)
            {
                console.log(error);
            }
        }
app.post('/',function (req,res){
    var form = new formidable.IncomingForm();

    form.parse(req);

    form.on('fileBegin',function(name,file){
        file.path = __dirname+file.name;
        console.log("Uploading");
    });

    form.on('file',
    function(name,file)
    {
        console.log('Uploaded ',file.name);
        cal(res,file);

    });

});

希望对你有帮助

关于node.js - 如何在nodejs中的单个服务调用中上传和下载文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50424330/

相关文章:

javascript - NodeJS promise 链 : reuse "then" and merge two promises

node.js - 如何在 node.js 中使用全局变量?

PHP 上传超时 : More Efficient Upload Script?

c# - 使用angular2将图像上传到asp.net core

javascript - 如何使用 JavaScript 从 GET 请求中获取附件? (休息)

javascript - Node.js 从事件中取消 setTimeout

javascript - 与文件 uploader 一起使用时如何在底部对齐按钮并且在顶部对齐标签?

download - 如何通过 API 从 Wikimedia Commons 下载文件?

html - Chrome 扩展 : Download/export content created "on the fly"

javascript - 接受 : a string or a function or two objects 的函数