gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:48:55 25 4
gpt4 key购买 nike

我可以通过 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com