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 相关文章推荐
IE 当eval遇上function的处理
Aug 09 Javascript
js查错流程归纳
May 04 Javascript
JavaScript中获取样式的原生方法小结
Oct 08 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
Mar 04 Javascript
JavaScript获得url查询参数的方法
Jul 02 Javascript
原生js与jQuery实现简单的tab切换特效对比
Jul 30 Javascript
js实现的光标位置工具函数示例
Oct 03 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
Dec 18 Javascript
Node.js中用D3.js的方法示例
Jan 16 Javascript
详解AngularJS2 Http服务
Jun 26 Javascript
薪资那么高的Web前端必看书单
Oct 13 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
Dec 10 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错误日志 display_errors与log_errors的区别
2012/10/09 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
js获取单元格自定义属性值的代码(IE/Firefox)
2010/04/05 Javascript
JavaScript实现的日期控件具体代码
2013/11/18 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
Javascript闭包用法实例分析
2015/01/23 Javascript
JS中this上下文对象使用方式
2016/10/09 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
vue使用axios跨域请求数据问题详解
2017/10/18 Javascript
nodejs中密码加密处理操作详解
2018/03/20 NodeJs
Vue中android4.4不兼容问题的解决方法
2018/09/04 Javascript
vue router 源码概览案例分析
2018/10/09 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
vue动态渲染svg、添加点击事件的实现
2020/03/13 Javascript
python实现堆栈与队列的方法
2015/01/15 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
Python ldap实现登录实例代码
2016/09/30 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
Python中的正则表达式与JSON数据交换格式
2019/07/03 Python
django框架模型层功能、组成与用法分析
2019/07/30 Python
python 并发编程 非阻塞IO模型原理解析
2019/08/20 Python
Python计算IV值的示例讲解
2020/02/28 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
加拿大票务网站:Ticketmaster加拿大
2017/07/17 全球购物
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
2015/07/16 面试题
生物科学专业个人求职信范文
2013/12/07 职场文书
酒店开业庆典主持词
2014/03/21 职场文书
法人授权委托书
2014/04/03 职场文书
建筑工地宣传标语
2014/06/18 职场文书
2015秋季田径运动会广播稿
2015/08/19 职场文书
作文之亲情600字
2019/09/23 职场文书
初中生入团申请书范文(五篇)
2019/10/16 职场文书
python-for x in range的用法(注意要点、细节)
2021/05/10 Python