vue实现的上传图片到数据库并显示到页面功能示例


Posted in Javascript onMarch 17, 2018

本文实例讲述了vue实现的上传图片到数据库并显示到页面功能。分享给大家供大家参考,具体如下:

1、点击上传图片,弹出选择图片选项框。

页面代码:

<div class="form-signin-heading" id="btnUpload" @change="upload">上传图片</div>
<input type="file" name="avatar" id="avatar" multiple="multiple" @change="upload">
<img :src="'http://localhost:8888'+item.photos_url" alt=""/>

由于我们要设置上传图片的样式,所以把input隐藏,并要做如下操作把input的点击事件给div框:

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("文件格式不支持上传");
    }
}

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
js控制div及网页相关属性的代码
Dec 19 Javascript
JS判断不能为空实例代码
Nov 26 Javascript
Angularjs material 实现搜索框功能
Mar 08 Javascript
jQuery实现内容定时切换效果完整实例
Apr 06 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
Sep 17 Javascript
最好用的Bootstrap fileinput.js文件上传组件
Dec 12 Javascript
关于Node.js的events.EventEmitter用法介绍
Apr 01 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
Apr 13 jQuery
微信小程序数据存储与取值详解
Jan 30 Javascript
js实现通过开始结束控制的计时器
Feb 25 Javascript
Element-UI中关于table表格的那些骚操作(小结)
Aug 15 Javascript
TypeScript魔法堂之枚举的超实用手册
Oct 29 Javascript
Vue的路由动态重定向和导航守卫实例
Mar 17 #Javascript
JS实现为动态创建的元素添加事件操作示例
Mar 17 #Javascript
对vue里函数的调用顺序介绍
Mar 17 #Javascript
基于vue2.0动态组件及render详解
Mar 17 #Javascript
Vue实现动态创建和删除数据的方法
Mar 17 #Javascript
JS实现将链接生成二维码并转为图片的方法
Mar 17 #Javascript
基于vue1和vue2获取dom元素的方法
Mar 17 #Javascript
You might like
php通过文件头判断格式的方法
2016/05/28 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
PHP实现简单的协程任务调度demo示例
2020/02/01 PHP
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
2014/10/17 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
jQuery.Callbacks()回调函数队列用法详解
2016/06/14 Javascript
AngularJS Phonecat实例讲解
2016/11/21 Javascript
Vue内容分发slot(全面解析)
2017/08/19 Javascript
JS库中的Particles.js在vue上的运用案例分析
2017/09/13 Javascript
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
JS实现动态无缝轮播
2020/01/11 Javascript
使用wxpython实现的一个简单图片浏览器实例
2014/07/10 Python
Python pickle类库介绍(对象序列化和反序列化)
2014/11/21 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
2017/10/25 Python
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
简单了解python的一些位运算技巧
2019/07/13 Python
Python操作excel的方法总结(xlrd、xlwt、openpyxl)
2019/09/02 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
html5+css3之CSS中的布局与Header的实现
2014/11/21 HTML / CSS
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
如何将整数int转换成字串String
2014/03/21 面试题
写好自荐信要注意的问题
2013/11/10 职场文书
爱情检讨书大全
2014/01/21 职场文书
体育教育毕业生自荐信
2014/06/29 职场文书
如何书写民事调解协议书?
2019/06/25 职场文书
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python
52条SQL语句教你性能优化
2021/05/25 MySQL
ubuntu下常用apt命令介绍
2022/06/05 Servers