uploading file using multer is not working fully (nodejs)

I am using NodeJS express (MVC) and I am trying to upload an image. I am trying to store the image in a uploads folder but nothing is showing up. When I console.log(req.files), I get the following (req.buffer prints out a long series of double digit numbers and letters). How do I get this to save the image in the folder?

[ { 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'>Upload Image</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); });


I had the same problem. I used Postman to make queries to my node app. The problem solved, when I removed http header Content-Type (it was set as urlencoded form).


multer is basically a middleware that uploads files or convert to some format which could be used later in the handler. So, from examples, you could do this in your case:

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>

If this does not work, you can debug by using command line, which usually helps me determine whether server or client is at fault.

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

add -I option to show verbose response.

链接地址: http://www.djcxy.com/p/5356.html

上一篇: 角度上传图片并显示给用户

下一篇: 使用MULTER上传文件无法正常工作(nodejs)