使用NodeJS Multer模块上传Jpg文件时出现格式问题

时间:2017-06-06 14:48:45

标签: node.js post jpeg multer

我使用Multer将Postman的jpg文件上传到node.js后端。

我假设"上传"顺利,因为图像位于正确的位置,在POST请求后具有正确的名称和正确的大小

不幸的是,当我尝试打开图像文件时,即使扩展名是.jpg,它也不会以jpg图像打开 我使用了checkFileType网站,显然,上传后文件类型变为application / octet-stream。

我没有在请求中指定任何标头。

Here is my Postman setup

Here is the response

以下是Node API方面的代码

var localWorkLocation = '/Users/noste/CarFixer/Pictures/';

exports.createBinary = function (req, res) {
        var location = localWorkLocation + req.params.platenumber;
        var storageOptions = multer.diskStorage({
                        destination: function (req, file, callback) {
                            mkdirp(location, err => callback(err, location));
                            callback(null, location);
                        },
                        filename: function (req, file, callback) {
                            //if (!file.originalname.match(/\.(jpg|jpeg|png)$/)) {
                            //        return callback(new Error('Only image files are allowed!'), false);
                            //}
                            callback(null, file.originalname);
                        },
        });
        var upload = multer({storage : storageOptions}).single('picture');

        upload(req, res, function(err){
            console.log(req.file);
            if(err) {
                return res.end(err.message);
            }

            res.send(req.file);
        });
};

我尝试上传.txt文件,上传后仍然可以读取。 有没有我需要指定我想保持jpg格式的地方?

1 个答案:

答案 0 :(得分:0)

这里是您需要的存储配置..根据您的代码更改命名

 var path = require('path');
 var storage = multer.diskStorage({
            destination: function(req, file, callback) {
                callback(null, './uploads');
            },

            filename: function(req, file, callback) {
                var fname = file.fieldname + '-' + Date.now() + path.extname(file.originalname);

                callback(null, fname);

            }
        });

这是multiple files upload

的另一个答案