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 相关文章推荐
setTimeout函数兼容各主流浏览器运行执行效果实例
Jun 13 Javascript
JavaScript实现找质数代码分享
Mar 24 Javascript
浅析JavaScript动画
Jun 10 Javascript
jQuery操作cookie
Aug 08 Javascript
Javascript Promise用法详解
May 10 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
Nov 30 Javascript
Vue多组件仓库开发与发布详解
Feb 28 Javascript
JavaScript面试技巧之数组的一些不low操作
Mar 22 Javascript
如何进行微信公众号开发的本地调试的方法
Jun 16 Javascript
小程序登录之支付宝授权的实现示例
Dec 13 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
Apr 11 Javascript
vue大型项目之分模块运行/打包的实现
Sep 21 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 中检查或过滤IP地址的实现代码
2011/11/27 PHP
PHP执行批量mysql语句的解决方法
2013/05/02 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
jquery中交替点击事件的实现代码
2014/02/14 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
2015/06/18 Javascript
jQuery绑定事件-多种实现方式总结
2016/05/09 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
基于JavaScript实现焦点图轮播效果
2017/03/27 Javascript
原生JS实现圆环拖拽效果
2017/04/07 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
webpack@v4升级踩坑(小结)
2018/10/08 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
详解Vue依赖收集引发的问题
2019/04/22 Javascript
JavaScript中的 new 命令
2019/05/22 Javascript
VUE安装使用教程详解
2019/06/03 Javascript
一篇文章带你浅入webpack的DLL优化打包
2020/02/20 Javascript
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
Python通过命令开启http.server服务器的方法
2017/11/04 Python
Python语言实现将图片转化为html页面
2017/12/06 Python
VScode编写第一个Python程序HelloWorld步骤
2018/04/06 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
用python写测试数据文件过程解析
2019/09/25 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
CSS3 transform的skew属性值图文详解
2014/07/21 HTML / CSS
奥地利顶级内衣丝袜品牌英国站:Wolford英国
2016/08/29 全球购物
幼儿运动会邀请函
2014/01/17 职场文书
羽毛球比赛策划方案
2014/06/13 职场文书
临床医学专业求职信
2014/08/08 职场文书
运动会演讲稿200字
2014/08/25 职场文书
暑期培训班策划方案
2014/08/26 职场文书
教师党员先进性教育自我剖析材料思想汇报
2014/09/24 职场文书
毕业生学校组织意见
2015/06/04 职场文书
辞职信怎么写?你都知道吗?
2019/06/24 职场文书
MySQL索引失效的典型案例
2021/06/05 MySQL
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python