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 相关文章推荐
IE8 原生JSON支持
Apr 13 Javascript
Tab切换组件(选项卡功能)实例代码
Nov 21 Javascript
js点击出现悬浮窗效果不使用JQuery插件
Jan 20 Javascript
js 本地预览的简单实现方法
Feb 18 Javascript
jquery中$each()方法的使用指南
Apr 30 Javascript
JavaScript中的parse()方法使用简介
Jun 12 Javascript
50 个 jQuery 插件可将你的网站带到另外一个高度
Apr 26 Javascript
jquery.validate.js 多个相同name的处理方式
Jul 10 jQuery
JavaScript实现焦点进入文本框内关闭输入法的核心代码
Sep 20 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
May 13 Javascript
ajax跨域访问遇到的问题及解决方案
May 23 Javascript
iview form清除校验状态的实现
Sep 19 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+MYSQL开发工具及资源收藏
2007/01/02 PHP
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
jQuery获取动态生成的元素示例
2014/06/15 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
arguments对象验证函数的参数是否合法
2015/06/26 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
详解Angular4中路由Router类的跳转navigate
2017/06/09 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
Python实现读取文件最后n行的方法
2017/02/23 Python
Python实现的端口扫描功能示例
2018/04/08 Python
python中的字符串内部换行方法
2018/07/19 Python
python bluetooth蓝牙信息获取蓝牙设备类型的方法
2019/11/29 Python
python时间日期操作方法实例小结
2020/02/06 Python
python编程进阶之类和对象用法实例分析
2020/02/21 Python
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
解释一下Windows的消息机制
2014/01/30 面试题
会计电算化个人自我评价
2013/11/17 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
三严三实对照检查材料
2014/08/25 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
观看建国大业观后感
2015/06/01 职场文书
《灰雀》教学反思
2016/02/19 职场文书
创业计划书之校园跑腿公司
2019/09/24 职场文书
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技