gpt4 book ai didi

node.js - 将文件从一个 Node js服务器发送到另一个

转载 作者:行者123 更新时间:2023-12-05 06:31:34 25 4
gpt4 key购买 nike

所以在第一台服务器上我有这样的路由:

const express = require('express');
const router = express.Router();
const FormData = require('form-data');
const fetch = require('node-fetch');
const multer = require('multer');
const storage = multer.memoryStorage();
const upload = multer({ storage });

router.post('/', upload.single('file'), async (req, res) => {

const form = new FormData();

form.append('folderId', req.body.folderId);
form.append('file', req.file.buffer, req.file.filename);

const result = await fetch('http://localhost:3003/users', { method: 'POST', body: form }).then(res => res.json());
res.json(result);
})

在此服务器上,它工作正常,我可以看到 req.file 并且它是缓冲区。所以我想将这个文件(不将其存储在第一台服务器上,它仅存在于内存中并作为缓冲区)发送到另一个。

其他服务器路由是这样的:

const express = require('express');
const router = express.Router();
const multer = require('multer');
const path = require('path');
const putanja = path.join(__dirname, '../uploads/users');
const storage = multer.diskStorage({
destination: (req, file, cb) => {
console.log('entered here?')
if (!req.body.folderId) return cb({ message: 'no folderId' });
if (!fs.existsSync(putanja + '/' + folderId)) fs.mkdirSync(putanja + '/' + folderId);
cb(null, putanja + '/' + folderId);
},
filename: (req, file, cb) => cb(null, file.originalname)
});
const upload = multer({ storage });
const fs = require('fs');


router.post('/', upload.single('file'), async (req, res) => {
console.log(req.body)
console.log(req.file)
res.json({ status: 'ok' })
})

所以在第二台服务器上,它甚至没有进入 multer 中间件,req.file 总是被定义,并且 console.log('entered here?') 从未被看到。看起来我没有以多部分形式传递数据?

另外,第二个服务器,当通过 postman 直接向它发送文件时,工作。

所以我的问题是,我该如何发送该文件?作为缓冲?溪流? Base64?我想我尝试了所有方法,甚至将 node-fetch 更改为 request,但仍然没有成功。

最佳答案

所以在第二台服务器上,它甚至没有进入 multer 中间件,req.file 总是被定义,并且 console.log('entered here?') 从未被看到。看起来我没有以多部分形式传递数据?

所以这意味着您的第二台服务器不理解请求的内容类型。

所以当你向第二个服务器发送请求时,做一件事在 header 中添加 Content-Type 参数

Content-Type 添加到 multipart/form-data或者如果你不知道传递 header :{ “内容类型”:未定义 } http 将为您设置 header

关于node.js - 将文件从一个 Node js服务器发送到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51765755/

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