首页 文章

使用multer上传文件不能完全正常工作(nodejs)

提问于
浏览
1

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

[{fieldname:'file',originalname:'thumbnail.jpg',encoding:'7bit',mimetype:'image / jpeg',buffer:,size:1347}]

HTML:

<form action =“/ bars / upload”method ='post'enctype =“multipart / form-data”>

<label for ='file'>上传图片</ label>
<input type =“file”name =“file”accept =“image / *”/>
<input type =“submit”name ='submit'value =“submit”/>

</ FORM>

NODE 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);});

3 回答

  • 2

    multer 基本上是一个上传文件或转换为某种格式的中间件,可以在以后的处理程序中使用 . 所以,从examples开始,你可以在你的情况下这样做:

    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 选项以显示详细响应 .

  • 1

    我有同样的问题 . 我使用Postman对我的节点应用程序进行查询 . 当我删除http标头Content-Type(它被设置为urlencoded格式)时问题解决了 .

  • 1

    我在dest中遇到了同样的问题:'../ public / uploads /'只需删除../并将其写成这样的目标:'public / uploads /'就是这样的

相关问题