Asi*_*med 5 rest http node.js express multer
Please help me to get out of this. This is my uploadRouter.js in which I am trying to upload image file from POSTMAN using multer module
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;
Run Code Online (Sandbox Code Playgroud)
I have set the body type of request message to form-data from POSTMAN,
But after changing body-format when I am uploading the image, the following error is given in 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 (<anonymous>)
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>
Run Code Online (Sandbox Code Playgroud)
Two headers are contained in POSTMAN:
1. Content-Type: 'application/json'
2. Authentication: bearer [[TOKEN]]
Please I am unable to understand the error, I am very new to node.js. Please help me through it
小智 8
我有一个类似的问题,这就是我解决它的方法。
首先来自客户,不指定 content-type
然后,在发送请求时使用此方法
const file = new FormData();
Run Code Online (Sandbox Code Playgroud)
如果您只发送文件
file.append('file', file, file.name);
Run Code Online (Sandbox Code Playgroud)
如果您要发送带有标题之类的文件,那么
file.append('file', file, file.name);
file.append('caption', fileCaption);
Run Code Online (Sandbox Code Playgroud)
然后使用常量文件向服务器发出发布请求
例如(使用角度)
this.httpClient.post<Addpost>('localhost:3000/add/addFile', file)
Run Code Online (Sandbox Code Playgroud)
在服务器中,您可以通过以下方式捕获请求
router.post('/addFile', upload.single('file')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5354 次 |
| 最近记录: |