使用multer上传文件不能完全工作(NodeJS)

uploading file using multer is not working fully (NodeJS)

本文关键字:工作 NodeJS 不能 multer 文件 使用      更新时间:2023-09-26

我正在使用NodeJS express (MVC),我正在尝试上传图像。我试图将图像存储在上传文件夹中,但没有任何显示。当我执行console.log(req.files)时,我得到以下内容(req.files)。Buffer输出一长串双位数数字和字母)。我如何得到这个保存在文件夹中的图像?

 [ 
   { 
     fieldname: 'file',
     originalname: 'thumbnail.jpg',
     encoding: '7bit',
     mimetype: 'image/jpeg',
     buffer: <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 00 00 01 00 01 00 00 ff db 00 84 00 09 06 07 0d 0d 10 0e 10 0d 0e 0d 0d 0d 0e 10
 0f 0d 0d 0e 0d 0d 0f  0e 0e 0e ... >,
     size: 1347 
   } 
]
HTML:

<form action="/bars/upload" method = 'post' enctype="multipart/form-data">
   <label for='file'>Upload Image</label>
   <input type="file" name="file" accept="image/*"/>
   <input type="submit" name='submit' value="submit"/>
</form>
JS

节点

var multer  = require('multer'); 
var upload = multer({ dest:'../public/uploads/' });
router.post('/bars/upload', function (req, res, next) { 
    console.log(req.files);     
    res.send(req.files); 
});

multer基本上是一个中间件,用于上传文件或转换为稍后可以在处理程序中使用的某种格式。所以,从例子中,你可以这样做:

var multer = require('multer'); 
var upload = multer({ dest:'../public/uploads/' });
router.post('/bars/upload', upload.single('someFile') ,function (req, res, next) {
    // if you're here, the file should have already been uploaded
    console.log(req.files); 
    console.log(req.body);// {"someParam": "someValue"}
    res.send(req.files); 
});

upload.html

<form action="/bars/upload" method = 'post' enctype="multipart/form-data">
    <label for='file'>Upload Image</label>
    <input type="file" name="someFile" accept="image/*"/>
    <input type="hidden" name="someParam" value="someValue"/>
    <input type="submit" name='submit' value="submit"/>
</form>

如果这不起作用,您可以使用命令行进行调试,这通常可以帮助我确定是服务器还是客户端有问题。

curl --form "someFile=@/path/to/file" -X POST http://localhost:3000/bars/upload

添加-I选项以显示详细响应

我也遇到了同样的问题。我用邮差来查询我的节点应用程序。问题解决了,当我删除http头内容类型(它被设置为urlencoded形式)。

我也有同样的问题在桌子:". ./public/uploads/' just remove ../这样写桌子:"公共/上传/"这是它