本文实例讲述了vue实现的上传图片到数据库并显示到页面功能。分享给大家供大家参考,具体如下:
1、点击上传图片,弹出选择图片选项框。
页面代码:
<p class="form-signin-heading" id="btnupload" @change="upload">上传图片</p><input type="file" name="avatar" id="avatar" multiple="multiple" @change="upload"><img :src="'http://localhost:8888'+item.photos_url" alt=""/>
由于我们要设置上传图片的样式,所以把input隐藏,并要做如下操作把input的点击事件给p框:
mounted: function () { var upload = document.getelementbyid("btnupload"); var avatar = document.getelementbyid("avatar"); upload.onclick =function(){ avatar.click(); //注意ie的兼容性 };}
2、在api接口的controller层加入两个文件,命名自己定,如:
upfile.js
let multer=require('multer');let storage = multer.diskstorage({ //设置上传后文件路径,uploads文件夹会自动创建。 destination: function (req, file, cb) { cb(null, './public/uploads') }, //给上传文件重命名,获取添加后缀名 filename: function (req, file, cb) { let fileformat = (file.originalname).split("."); cb(null, file.fieldname + '-' + date.now() + "." + fileformat[fileformat.length - 1]); }});//添加配置文件到multer对象。let upload = multer({ storage: storage});module.exports = upload;
upfilecontroller.js
var muilter = require('./upfile.js');//multer有single()中的名称必须是表单上传字段的name名称。var upload=muilter.single('file');function datainput(req, res) { upload(req, res, function (err) { //添加错误处理 if (err) { return console.log(err); } //文件信息在req.file或者req.files中显示。 let photopath = req.file.path; photopath = photopath.replace(/public/,"");//将文件路径中的public\去掉,否则会和静态资源配置冲突 //将photopath存入数据库即可 console.log(photopath); res.send(photopath); });}module.exports = { datainput};
3、在页面中将图片的地址存到数据库
upload: function (e) { var that = this; let formdata = new window.formdata(); let file = e.target.files[0]; formdata.append('file',file);//通过append向form对象添加数据 //利用split切割,拿到上传文件的格式 var src = file.name, formart = src.split(".")[1]; //使用if判断上传文件格式是否符合 if (formart == "jpg" || formart == "png" || formart == "docx" || formart == "txt" || formart == "ppt" || formart == "xlsx" || formart == "zip" || formart == "rar" || formart == "doc") { //只有满足以上格式时,才会触发ajax请求 this.$axios.post(this.$api.personalcenter.upfile,formdata).then(function (res) { that.upfiledata = res.data; }).then(function (res) { var params = { photos_url: that.upfiledata, photo_des: '' };// console.log(params.photos_url,'photos_url') that.$axios.post(that.$api.personalcenter.walladd,qs.stringify(params)).then(function (res) { console.log(res.data); that.$options.methods.imglist.bind(that)(); }).catch(function (err) { console.log(err); console.log("请求出错"); }) }) } else { alert("文件格式不支持上传"); }}
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
spirngmvc js传递复杂json参数到controller的实例
vue.js 表单控件操作小结
js传递数组参数到后台controller的方法
以上就是vue实现的上传图片到数据库并显示到页面功能示例的详细内容。
