如何在nodejs中的单个服务调用中上传和下载文件?
Posted
技术标签:
【中文标题】如何在nodejs中的单个服务调用中上传和下载文件?【英文标题】:How to upload and download a file in a single service call in nodejs? 【发布时间】:2018-10-29 15:54:51 【问题描述】:我可以通过邮递员上传文件并在两个不同的服务中从服务器下载文件..但我需要的是..在一次调用中我应该能够将文件上传到服务器,然后在执行一些操作后执行一些操作操作我应该能够自动下载文件。 这是我的代码。
我的第一次服务(文件上传操作)
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】: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);
);
);
希望对你有帮助
【讨论】:
以上是关于如何在nodejs中的单个服务调用中上传和下载文件?的主要内容,如果未能解决你的问题,请参考以下文章