node.js - Multer 图像上传错误 : Unexpected token - in JSON at position 0, SyntaxError: JSON 中位置 0 的意外标记 #

标签 node.js rest http express multer

请帮我摆脱这一切。这是我的 uploadRouter.js,我在其中尝试使用 multer 模块从 POSTMAN 上传图像文件

const express = require('express');
const mongoose = require('mongoose');
const autheticate = require('../authenticate');
const multer = require('multer')
const bodyParser = require('body-parser');
const storage = multer.diskStorage({
    destination: (req, file, cb) => {
        cb(null, 'public/images');
    },
    filename: (req, file, cb) => {
        cb(null, file.originalname);
    }
});
const imageFileFilter = (req, file, cb) => {
    if(!file.originalname.match(/\.(jpg|jpeg|png|gif)$/)) {
        return cb(new Error('You can upload only image files!'), false);
    }
    cb(null, true);
};
const upload = multer({ storage: storage, fileFilter: imageFileFilter});
//const uploadImgFile = multer().single('imageFile');
const uploadRouter=express.Router();
uploadRouter.use(bodyParser.json());
uploadRouter.route('/')
.get(autheticate.verifyUser,autheticate.verifyAdmin,(req,res,next)=>{
    res.statusCode = 403;
    res.end('GET operation not supported on /imageUpload');
})
.post(autheticate.verifyUser,autheticate.verifyAdmin,upload.single('imageFile'),(req,res,next)=>{
   res.statusCode=200;
   res.setHeader('Content-Type','application/json');
   res.end('End');
})
.put(autheticate.verifyUser,autheticate.verifyAdmin,(req,res,next)=>{
    res.statusCode = 403;
    res.end('GET operation not supported on /imageUpload');
})
.delete(autheticate.verifyUser,autheticate.verifyAdmin,(req,res,next)=>{
    res.statusCode = 403;
    res.end('GET operation not supported on /imageUpload');
})
module.exports = uploadRouter;

我已将请求消息的主体类型设置为来自 POSTMAN 的 form-data
但是当我上传图片时改变body-format后,POSTMAN中给出了以下错误

    <body>
        <h1>Unexpected token - in JSON at position 0</h1>
        <h2>400</h2>
        <pre>SyntaxError: Unexpected token # in JSON at position 0
    at JSON.parse (&lt;anonymous&gt;)
    at createStrictSyntaxError (F:\Cousera\Node\coursera-node-confusion-server\node_modules\body-parser\lib\types\json.js:157:10)
    at parse (F:\Cousera\Node\coursera-node-confusion-server\node_modules\body-parser\lib\types\json.js:83:15)
    at F:\Cousera\Node\coursera-node-confusion-server\node_modules\body-parser\lib\read.js:121:18
    at invokeCallback (F:\Cousera\Node\coursera-node-confusion-server\node_modules\raw-body\index.js:224:16)
    at done (F:\Cousera\Node\coursera-node-confusion-server\node_modules\raw-body\index.js:213:7)
    at IncomingMessage.onEnd (F:\Cousera\Node\coursera-node-confusion-server\node_modules\raw-body\index.js:273:7)
    at emitNone (events.js:106:13)
    at IncomingMessage.emit (events.js:208:7)
    at endReadableNT (_stream_readable.js:1055:12)
    at _combinedTickCallback (internal/process/next_tick.js:138:11)
    at process._tickCallback (internal/process/next_tick.js:180:9)</pre>
    </body>
</html>

POSTMAN 中包含两个 header :
1. 内容类型:'application/json'
2. 身份验证:承载[[TOKEN]]
请我无法理解错误,我是 node.js 的新手。请帮我解决这个问题

最佳答案

当您将 Content-Type 作为 application/json 传递并上传内容类型不是 json 的文件时,会出现此问题。 删除此 header ,因为它不是必需的。

关于node.js - Multer 图像上传错误 : Unexpected token - in JSON at position 0, SyntaxError: JSON 中位置 0 的意外标记 #,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50432928/

相关文章:

node.js - 网络摄像头显示在 LAN 上而不是互联网

java - 尝试记录 Retrofit JSON 响应时出现 NoSuchMethodError

java - 如何查看Axis2发送和接收的内容?

http - 在哪些用例中,Web 服务可能会收到除 CORS 之外的 OPTIONS 请求?

RestSharp (monotouch) 中的 HTTP 缓存

node.js - 是否可以让 IRC 客户端使用 websockets 运行您自己的 IRC 服务器而无需 websockets 网关?

javascript - Node.js 表示 post 参数始终未定义

node.js - 使用 Jade 和 NodeJS 插入图像

java - 如何正确处理 JWT 刷新?

java - 使用 enunciate 为列表、数组、 map 等的消息正文生成示例 xml/json?