gpt4 book ai didi

node.js - 在 Node.js 服务器上接受请求正文中的二进制文件

转载 作者:太空宇宙 更新时间:2023-11-03 22:58:18 25 4
gpt4 key购买 nike

我想在 POST 正文中上传二进制文件。

我不想使用multipart/form-data

(据我所知,multipart/form-data 对于网络应用程序来说是一种易于使用的技术,但对于移动应用程序来说并不容易。我没有网络应用程序,我只是构建移动应用程序。)

我尝试过使用busboy,但无法在非multipart/form-data 上传中找到任何内容。 express-fileupload 也使用相同的东西 AFAIK。

最佳答案

所以,如果我理解正确的话,您想要创建一个用于将文件上传到服务器的路由。实现此目的的一种方法是使用 body-parser Express 中间件与写入流相结合:

const bodyparser = require('body-parser');
const express = require('express');
const fs = require('fs');
const app = express();

app.post('/upload/:image', bodyparser.raw({
limit: '10mb',
type: 'image/*'
}), (req, res) => {
const image = req.params.image;
const fd = fs.createWriteStream(`[SERVER_UPLOAD_PATH]/${image}`, {
flags: "w+",
encoding: "binary"
});
fd.end(req.body);
fd.on('close', () => res.send({status: 'OK'});
});

发送以下请求会将文件上传到 [SERVER_UPLOAD_PATH]:

curl -X POST -H 'Content-Type: image/png' --data-binary @[image-path]/image.png http://[server-url]/upload/image.png

上面的例子是用来上传图片到服务器的,但是你可以做相应的修改。请注意,您需要检查文件类型,以确保用户仅上传他们应该上传的文件类型。

关于node.js - 在 Node.js 服务器上接受请求正文中的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54034468/

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