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 相关文章推荐
jquery 表单进行客户端验证demo
Aug 24 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
Feb 19 Javascript
JavaScript中使用Callback控制流程介绍
Mar 16 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
Jun 28 Javascript
AngularJS使用ng-repeat指令实现下拉框
Aug 23 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
Oct 12 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
Dec 14 Javascript
JavaScript基本类型值-Number类型
Feb 24 Javascript
VUE的history模式下除了index外其他路由404报错解决办法
Aug 21 Javascript
JS回调函数简单易懂的入门实例分析
Sep 29 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
Jul 24 Javascript
浅谈Vue使用Elementui修改默认的最快方法
Dec 05 Vue.js
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 Curl出现403错误的解决办法
2014/05/29 PHP
php curl 上传文件代码实例
2015/04/27 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
php探针不显示内存解决方法
2019/09/17 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
JQuery $.each遍历JavaScript数组对象实例
2014/09/01 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
原生js图片轮播效果实现代码
2016/10/19 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
2017/05/02 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
2018/03/13 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
浅谈django中的认证与登录
2016/10/31 Python
Python3中bytes类型转换为str类型
2018/09/27 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
2019/06/08 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
python创建与遍历List二维列表的方法
2019/08/16 Python
python基于socket实现的UDP及TCP通讯功能示例
2019/11/01 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
2020/02/13 Python
python中return不返回值的问题解析
2020/07/22 Python
Python如何解除一个装饰器
2020/08/07 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
2021/01/26 Python
详解CSS3+JS完美实现放大镜模式
2020/12/03 HTML / CSS
扩大国家免疫规划实施方案
2014/03/21 职场文书
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python