upload实现多文件上传element-ui
直接上传,不做裁剪的情况
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | <el-upload id= "upload" ref= "upload" multiple action= "" list-type= "picture-card" :http-request= "uploadFile" :auto-upload= "false" :file-list= "this.fileList" > <i slot= "default" class = "el-icon-plus" ></i> <div slot= "file" slot-scope= "{ file }" > <img class = "el-upload-list__item-thumbnail" :src= "file.url" alt= "" /> <span class = "el-upload-list__item-actions" > <span class = "el-upload-list__item-preview" @click= "handlePictureCardPreview(file)" > <i class = "el-icon-zoom-in" ></i> </span> <span v- if = "!disabled" class = "el-upload-list__item-delete" @click= "handleRemove(file)" > <i class = "el-icon-delete" ></i> </span> </span> </div> </el-upload> <el-dialog :visible.sync= "dialogVisible" > <img width= "100%" :src= "dialogImageUrl" alt /> </el-dialog> <el-button @click= "finish" >上传</el-button> <script> export default { name: "" , data() { return { dialogImageUrl: "" , dialogVisible: false , disabled: false , fileSizeIsSatisfy: false , fileList: [], fileData: [], }, methods:{ handleRemove(file) { console.log(file); }, handlePictureCardPreview(file) { this .dialogImageUrl = file.url; this .dialogVisible = true ; }, finish: function () { this .fileData = new FormData(); this .$refs.upload.submit(); this .$axios .post( "http://请求的地址" , this .fileData) .then((res) => { console.log(res); if (res.status == 200) { this .$message({ message: "上传成功" , type: "success" , }); } }); }, uploadFile: function (file) { this .fileData.append( "file" , file.file); }, } } </script> |
nodejs如何处理多文件并存入数据库的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | nodejs下载multer依赖 在util文件夹下新建multerCtr.js var multer = require( 'multer' ); var storage = multer.diskStorage({ //设置上传后文件路径,uploads文件夹会自动创建。 destination: function (req, file, cb) { cb( null , './public/uploads' ) }, //给上传文件重命名,获取添加后缀名 filename: function (req, file, cb) { var fileFormat = (file.originalname).split( "." ); cb( null , file.fieldname + '-' + Date.now() + fileFormat[0] + "." + fileFormat[fileFormat.length - 1]); } }); //添加配置文件到muler对象。 var upload = multer({ storage: storage }); //导出对象 module.exports = upload; |
这属于公共方法,可以直接引用。需要注意的一点,多文件上传只加上Date.now()是不够的,因为这样会出现文件重名的状况,所以需在后面拼接上fileFormat[0],这样就能解决文件重名
然后在controller层直接引用这个文件就可以了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | const { connect } = require( '../../config/connMysql' ); const myMulter = require( '../../util/multerHly' ); //创建多文件上传的方法,第一个参数为前台upload标签里的name值,第二个参数限制文 件个数 var uploadList = myMulter.array( 'file' , 10) module.exports = { loadImages(req, resp) { //上传多文件 uploadList(req, resp, (err) => { let imagesArr = []; //遍历req.files去除前缀,然后push到数组里 req.files.forEach((item, i) => { imagesArr.push(item.path.replace(/public\\/, "" )) }); //将数组转换成字符串并存入数据库 let files = imagesArr.join(); let sql = 'update companyinfomation set cif_imgs=? where id=?' ; let arr = [files, 1]; connect(sql, arr, (err, data) => { if (!err) { resp.send({ code: 200, msg: '上传文件成功' }) } else { resp.send({ code: 500, msg: '上传文件失败' }) } }) }) }, } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效