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下:float属性会影响offsetTop的取值
Dec 22 Javascript
iframe 自适应高度[在IE6 IE7 FF下测试通过]
Apr 13 Javascript
jquery.AutoComplete.js中文修正版(支持firefox)
Apr 09 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
Nov 26 Javascript
在linux中使用包管理器安装node.js
Mar 13 Javascript
jQuery增加自定义函数的方法
Jul 18 Javascript
jQuery实现摸拟alert提示框
May 22 Javascript
Javascript动画效果(2)
Oct 11 Javascript
jQuery实现淡入淡出的模态框
Feb 09 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
Feb 19 Javascript
vue动态生成dom并且自动绑定事件
Apr 19 Javascript
JavaScript实现指定数量的并发限制的示例代码
Mar 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
超外差式晶体管收音机的组装与统调
2021/03/01 无线电
php文件夹的创建与删除方法
2015/01/24 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
2016/11/04 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
JavaScript入门教程(5) js Screen屏幕对象
2009/01/31 Javascript
Javascript 同时提交多个Web表单的方法
2009/02/19 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
js中遍历Map对象的方法
2016/07/27 Javascript
利用Node.js对文件进行重命名
2017/03/12 Javascript
浅谈Node Inspector 代理实现
2017/10/19 Javascript
详解python之简单主机批量管理工具
2017/01/27 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
2017/08/30 Python
python爬虫之自动登录与验证码识别
2020/06/15 Python
使用Python批量修改文件名的代码实例
2019/01/24 Python
python文件转为exe文件的方法及用法详解
2019/07/08 Python
Python操作SQLite数据库过程解析
2019/09/02 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
导出HTML5 Canvas图片并上传服务器功能
2019/08/16 HTML / CSS
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
UNIX文件名称有什么规定
2013/03/25 面试题
我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢
2013/04/24 面试题
房地产销售大学生自我评价分享
2013/11/11 职场文书
简短的公司员工自我评价分享
2013/11/13 职场文书
小学国庆节活动方案
2014/02/11 职场文书
工作评语大全
2014/04/26 职场文书
五四青年节演讲稿
2014/05/26 职场文书
2015年中学元旦晚会活动方案
2014/12/09 职场文书
军训后的感想
2015/08/07 职场文书
禁毒心得体会范文
2016/01/15 职场文书
创业计划书之面包店
2019/09/12 职场文书
V Rising 服务器搭建图文教程
2022/06/16 Servers