gpt4 book ai didi

node.js - Nodejs - 处理和发送多部分请求,

转载 作者:行者123 更新时间:2023-12-02 16:45:31 25 4
gpt4 key购买 nike

我的应用程序在 Nodejs 服务器上运行,Nodejs 还充当来自应用程序的请求的中间件/代理。因此,所有 REST 调用都从浏览器转到 NodeJs,然后转到 Java API。

我看到一个问题处理请求与多部分形式的数据。

我在我的 nodejs 中拦截来自浏览器的文件上传 REST 调用,使用多方库解析请求,并根据文件上传请求形成一个表单数据对象。

我正在使用 https 模块向 API 发送数据,那么如何通过 https 向 API 发送表单数据请求?

我将 Content-Type 作为 multipart/form-data 发送; boundary=----WebKitFormBoundary6fyv95baqEpoGJaK,从浏览器获取。

var https = require('https');
var multiparty = require('multiparty');
var FormData = require('form-data');
app.post('/v1/filesUpload', (request, response) => {
let apiOptions ={
headers: {
'Content-Type': request.headers['Content-Type'],
'host' : ...
'path': ...
.
.
.
}
}
let form = new multiparty.Form();
let formdataReq = new FormData();
Object.keys(fields).forEach(function (name) {
console.log('got field named ' + fields[name]);
formdataReq.append(name, fields[name].toString());
});

formdataReq.append('file', JSON.stringify(files));
const req = https.request(apiOptions, (res) => {

});
req.write(querystring.stringify(formDataReq));
}catch (e) {
console.log(e);
}
});

});

最佳答案

试试这个

const express = require("express");
const app = express();
const bodyParser = require('body-parser');
var multer = require('multer')();
const FormData = require('form-data');
const axios = require('axios');
const fs = require('fs');

app.use(bodyParser.json());

app.post('/fileUpload' , multer.single('fileFieldName'), (req , res) => {
const fileRecievedFromClient = req.file; //File Object sent in 'fileFieldName' field in multipart/form-data
console.log(req.file)

let form = new FormData();
form.append('fileFieldName', fileRecievedFromClient.buffer, fileRecievedFromClient.originalname);

axios.post('http://server2url/fileUploadToServer2', form, {
headers: {
'Content-Type': `multipart/form-data; boundary=${form._boundary}`
}
}).then((responseFromServer2) => {
res.send("SUCCESS")
}).catch((err) => {
res.send("ERROR")
})
})

const server = app.listen(3000, function () {
console.log('Server listening on port 3000');
});

关于node.js - Nodejs - 处理和发送多部分请求,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60629800/

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