gpt4 book ai didi

node.js - multer 无法识别带有 PUT 的文件

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

所以我刚刚安装了 Node 并使用 Express 启动了一个小型 HTTP 服务器。我正在尝试使用 multer 上传文件和 HTTP PUT但看起来是multer无法处理 PUTting 文件。

POST 做同样的事情工作得很好。

这是我的main.js :

var express = require('express');
var multer = require('multer');
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './uploads')
},
filename: function (req, file, cb) {
cb(null, file.originalname)
}
});
var upload = multer({ storage: storage });
var app = express();

app.get('/', function (req, res) {
res.send('Up and running');
});

app.put('/up/:file', upload.any(), function (req, res, next) {
console.log('files: ' + req.files);
console.log(req.params.file);
res.send('got that');
})

app.post('/up', upload.any(), function (req, res, next) {
res.send('got that');
})

var server = app.listen(8888, function(){
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});

使用curl我可以POST文件就好了,e。 G。与 curl --form "file=@someFile.jpg" http://localhost:8888/up .

我尝试将文件放入 curl http://localhost:8888/up/someFile.jpg --upload-file someFile.jpg以及 curl -i -T someFile.jpg http://localhost:8888/up/someFile.jpg但这是行不通的。 req.files总是undefined .

<小时/>

问题/TL;DR: multer 是否无法通过 PUT 接受文件?我如何接收 PUT 的文件与 express ?实际上,我不需要 Express ...一个简单的 Node 解决方案就足够了。

最佳答案

用于发送 PUT 请求的两种形式的 curl 不会发送 multipart/form-data 正文,而是将原始文件内容作为正文发送。 multer 不支持这一点,因为它需要 multipart/form-data 编码的表单。

为了支持这些原始文件上传,您需要自己处理它们(例如,将请求通过管道传输到磁盘或其他地方)。例如:

app.put('/up/:file', function (req, res, next) {
// TODO: optionally validate `req.headers['content-type']`
// TODO: sanitize `req.params.file` before
// using it to create the filename
var filename = req.params.file;
var diskStream = fs.createWriteStream(path.join(__dirname, 'uploads', filename));
req.pipe(diskStream).on('finish', function() {
res.send('got that');
});
});

关于node.js - multer 无法识别带有 PUT 的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33976006/

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