上傳圖片:multer模塊
https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md
以上基本功能就實現。
細節處理👇
const express=require('express') const router= express.Router() const multer= require('multer') var storage = multer.diskStorage({ destination: function(req, file, cb) { // 指定文件路徑 cb(null, './static/img') }, filename: function(req, file, cb) { // 指定文件名 //文件名重復覆蓋 // 后綴名發生改變,如何解決?👇 console.log('----',file) let exts=file.originalname.split('.') //拿到源文件的后綴名 let ext=exts[exts.length-1] let tmpname=(new Date()).getTime()+parseInt(Math.random()*9999) //為了避免重復,用時間戳表示 cb(null, `${tmpname}.${ext}`); } }); var upload = multer({ storage: storage }); //上傳圖片必須用post方法 router.post('/upload',upload.single('hehe'),(req,res)=>{////hehe就是上傳圖片數據的key值,前端必須保持統一。可以用postman模擬,數據類型是表單對象。 console.log(req.file) let {size,mimetype,path}=req.file let types=['jpg','jpeg','png','gif'] //允許上傳的數據類型 let tmpType=mimetype.split('/')[1] if(size>500000){ return res.send({err:-1,msg:'尺寸過大'}) }else if(types.indexOf(tmpType)==-1){ return res.send({err:-2,msg:'媒體類型錯誤'}) }else{ let url=`/public/img/${req.file.filename}` res.send({err:0,msg:'ok',img:url}) } }) module.exports=router
前端部分如何 上傳圖片
方式二, 代碼部分👇
總結:
前端部分,以jq示例,
先獲取圖片,再轉成formData對象,把圖片添加到對象里(注意:這里只能通過append添加)
把formData對象傳到$.ajax參數中即可。