Как загрузить и загрузить файл за один сервисный вызов в nodejs? - PullRequest
0 голосов
/ 19 мая 2018

Я могу загрузить файл через почтальона и загрузить файл с сервера в двух разных службах. Но мне нужно ... За один звонок я могу загрузить файл на сервер, а затем выполнить некоторую операцию после выполнения некоторогоОперация я должен иметь возможность загрузить файл автоматически.Вот мой код.

Мой первый сервис (операция загрузки файлов)

  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;

Теперь мне нужно сделать эти два сервиса одним?

1 Ответ

0 голосов
/ 14 мая 2019
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);

    });

});

Надеюсь, это поможет

...