express实现图片上传
参考:https://cloud.tencent.com/developer/article/1730338
1.安装
npm install express body-parser cors express-fileupload morgan lodash --save
2.新建index.js
const express = require('express'); const fileUpload = require('express-fileupload'); const cors = require('cors'); const bodyParser = require('body-parser'); const morgan = require('morgan'); const _ = require('lodash'); const app = express(); // enable files upload app.use(fileUpload({ createParentPath: true })); //add other middleware app.use(cors()); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: true})); app.use(morgan('dev')); //start app const port = process.env.PORT || 3000; app.listen(port, () => console.log(`App is listening on port ${port}.`) );
3.还是在index.js加上图片上传接口
app.post('/upload-avatar', async (req, res) => { try { if(!req.files) { res.send({ status: false, message: 'No file uploaded' }); } else { //Use the name of the input field (i.e. "avatar") to retrieve the uploaded file let avatar = req.files.file; //Use the mv() method to place the file in upload directory (i.e. "uploads") avatar.mv('./uploads/' + avatar.name); //send response res.send({ status: true, message: 'File is uploaded', data: { name: avatar.name, mimetype: avatar.mimetype, size: avatar.size } }); } } catch (err) { res.status(500).send(err); } });
3.1. 多文件上传
app.post('/upload-photos', async (req, res) => { try { if(!req.files) { res.send({ status: false, message: 'No file uploaded' }); } else { let data = []; //loop all files _.forEach(_.keysIn(req.files.photos), (key) => { let photo = req.files.photos[key]; //move photo to uploads directory photo.mv('./uploads/' + photo.name); //push file details data.push({ name: photo.name, mimetype: photo.mimetype, size: photo.size }); }); //return response res.send({ status: true, message: 'Files are uploaded', data: data }); } } catch (err) { res.status(500).send(err); } });
5. 运行
node index.js
6. 文件大小限制
app.use(fileUpload({ createParentPath: true, limits: { fileSize: 2 * 1024 * 1024 * 1024 //2MB max file(s) size }, }));

浙公网安备 33010602011771号