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 相关文章推荐
网页常用特效代码整理
Jun 23 Javascript
html中的input标签的checked属性jquery判断代码
Sep 19 Javascript
js对象的复制继承实例
Jan 10 Javascript
JS实现点击颜色块切换指定区域背景颜色的方法
Feb 25 Javascript
jQuery实现网站添加高亮突出显示效果的方法
Jun 26 Javascript
jquery实现手机号码选号的方法
Jul 31 Javascript
AngularJS基础 ng-click 指令示例代码
Aug 01 Javascript
js es6系列教程 - 新的类语法实战选项卡(详解)
Sep 02 Javascript
angular2 ng2 @input和@output理解及示例
Oct 10 Javascript
解决Vue打包之后文件路径出错的问题
Mar 06 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
Aug 25 Javascript
jquery+css3实现的经典弹出层效果示例
May 16 jQuery
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
php5中类的学习
2008/03/28 PHP
php 静态变量的初始化
2009/11/15 PHP
php的大小写敏感问题整理
2011/12/29 PHP
WordPress的文章自动添加关键词及关键词的SEO优化
2016/03/01 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
jquery ready()的几种实现方法小结
2010/06/18 Javascript
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
2010/07/24 Javascript
ajax 缓存 问题 requestheader
2010/08/01 Javascript
js获得页面的高度和宽度的方法
2014/02/23 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
2016/05/18 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
js动态引入的四种方法
2018/05/05 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
jQuery事件多次绑定与解绑问题实例分析
2019/02/19 jQuery
vue路由跳转传参数的方法
2019/05/06 Javascript
JS实现贪吃蛇游戏
2019/11/15 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
JS实现联想、自动补齐国家或地区名称的功能
2020/07/07 Javascript
在Vue 中获取下拉框的文本及选项值操作
2020/08/13 Javascript
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
[49:12]完美世界DOTA2联赛PWL S2 Magma vs GXR 第二场 11.29
2020/12/02 DOTA
Python 字典(Dictionary)操作详解
2014/03/11 Python
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
没编程基础可以学python吗
2020/06/17 Python
HTML文本属性&amp;颜色控制属性的实现
2019/12/17 HTML / CSS
中国酒类在线零售网站:酒仙网
2016/08/20 全球购物
2014全国两会心得体会
2014/03/17 职场文书
乌镇导游词
2015/02/02 职场文书
元旦晚会开场白
2015/05/29 职场文书
初中毕业生感言
2015/07/31 职场文书
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL
Python列表的索引与切片
2022/04/07 Python