nodejs 之express 檔案上傳
阿新 • • 發佈:2020-07-24
使用中介軟體multer管理上傳檔案
使用方法
//1 引入
let multer = require('multer');
//2 例項化
let objMulter = multer({ dest: './upload' }); //dest: 指定 儲存位置(存到伺服器)
//安裝中介軟體,
app.use(objMulter.any()); //允許上傳什麼型別檔案,any 代表任何型別
app.get('/reg',(req,res)=>{
req.files
})
req.files是一個數組,每一個上傳的檔案有如下描述
fieldname:表單name名originalname:上傳的檔名
encoding:編碼方式
mimetype:檔案型別
buffer:檔案本身
size:尺寸
destination:儲存路徑
filename:儲存後的檔名不含字尾
path:儲存磁碟路徑+儲存後的檔名不含字尾 可以使用fs模組修改檔名 letoldname=req.files[i].path; letnewname=oldname+path.parse(req.files[i].originalname).ext; fs.renameSync(oldname,newname); path模組用來解析路徑
path.parse('c:\\wamp\\xx.png') // string -> object
{
root: 'c:\\', 碟符
dir: 'c:\\wamp', 目錄
base: 'xx.png', 檔名
ext: '.png', 副檔名
name: 'xx' 檔案,不含副檔名
}
let express=require('express'); let multer=require('multer') let app=express(); let fs=require('fs'); const path=require('path'); app.listen(7755,console.log("啟動服務")); app.use(express.static('./public')) let objMulter=multer({dest:'./public/upload'}) app.use(objMulter.any()); // let str1='~public\\upload\\a37fc3aa270700ecbd858d8fc7485c02.png' // let str2='c:/sss/\aa//d.ff' // let str3='' // console.log(path.parse(str1)); // console.log(path.parse(str2)); // console.log(path.join(str1,str2,str3)) // console.log(path.resolve(str2)) app.get('/api',(req,res,next)=>{ try { let urllist=[]; for(i=0;i<req.files.length;i++){ let oldname=req.files[i].path; let newname=oldname+path.parse(req.files[i].originalname).ext; fs.renameSync(oldname,newname); let url="http://localhost:7755/upload/"+req.files[i].filename+path.parse(req.files[i].originalname).ext urllist.push(url); } res.send({err:0,url:urllist}) } catch (error) { console.log(error) } })