form表单上传
1,单文件上传 html
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="myfile" multiple="multiple">
<button>提交</button>
</form>
2,多文件上传 html
<form action="/uploadfiles" method="post" enctype="multipart/form-data">
<input type="file" name="myfile1" multiple="multiple">
<button>多文件提交</button>
</form>
ajax上传
html:
<input type="file" id="myajaxFiles" name="ajaxFile">
<button onclick="ajaxFile()">ajax提交</button>
js:
function ajaxFile() {
var formData = new FormData()
formData.append("myfile",$("#myajaxFiles")[0].file[0])
$.ajax({
url:"/upload",
type:"post",
data:formData,
contentType:false,
processData:false,
success(data){
$("#myimg")[0].src = data
}
})
}
路由拦截
const express = require("express")
const router = express.Router()
const ctrl = require("../controller/uploadFileCtrl")
const upload = require("../config/Multercig")
router.post("/upload",upload.single("myfile"),ctrl.upload)
router.post("/uploadfiles",upload.array("myfile1",9),ctrl.uploadfiles)
module.exports = router
控制层
module.exports = {
upload(req,resp){
// 要获取上传的东西 然后解析
// 在这里拼接 储存路径
let str = "upload/"+req.file.filename
resp.send(str)
},
uploadfiles(req,resp){
let arr = []
req.files.forEach(item=>{
var str = "./src/upload"+item.filename
arr.push(str)
})
}
}
配置层
const multer = require("multer")
const storage = multer.diskStorage({
destination :function (req,file,cb) {
// 在这里处理文件路径/
cb(null,"src/upload")
},
filename : function (req,file,cb) {
// 在这里处理文件名
cb(null,Date.now()+"-"+file.originalname)
}
})
const upload = multer({storage:storage})
module.exports = upload