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 相关文章推荐
JS获取各种浏览器窗口大小的方法
Jan 14 Javascript
javascript面向对象程序设计高级特性经典教程(值得收藏)
May 19 Javascript
基于JavaScript实现轮播图代码
Jul 14 Javascript
jquery组件WebUploader文件上传用法详解
Oct 23 Javascript
jQuery获取this当前对象子元素对象的方法
Nov 29 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
Jan 04 Javascript
jQuery Masonry瀑布流插件使用方法详解
Jan 18 Javascript
Angular.js自定义指令学习笔记实例
Feb 24 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
Jun 22 Javascript
JS实现为动态创建的元素添加事件操作示例
Mar 17 Javascript
vue.js自定义组件directives的实例代码
Nov 09 Javascript
微信小程序当前时间时段选择器插件使用方法详解
Dec 28 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 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
php利用header函数下载各种文件
2016/08/24 PHP
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
jQuery CSS3自定义美化Checkbox实现代码
2016/05/12 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
荐书|您有一份JavaScript书单待签收
2017/07/21 Javascript
微信小程序实现弹出层效果
2020/05/26 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
2019/10/28 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
vue引入静态js文件的方法
2020/06/20 Javascript
jQuery 添加元素和删除元素的方法
2020/07/15 jQuery
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
Python中的Numpy入门教程
2014/04/26 Python
简单了解python的内存管理机制
2019/07/08 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
200行python代码实现2048游戏
2019/07/17 Python
python3下pygame如何实现显示中文
2020/01/11 Python
Python如何定义有可选参数的元类
2020/07/31 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
python 写一个性能测试工具(一)
2020/10/24 Python
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
Ralph Lauren意大利官方网站:时尚界最负盛名的品牌之一
2018/10/18 全球购物
意大利奢侈品零售商:ilDuomo Novara
2019/09/11 全球购物
共产党员批评与自我批评
2014/10/15 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
高老头读书笔记
2015/06/30 职场文书
Mysql 如何实现多张无关联表查询数据并分页
2021/06/05 MySQL
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python
Java实现房屋出租系统详解
2021/10/05 Java/Android
Python实现灰色关联分析与结果可视化的详细代码
2022/03/25 Python
nginx.conf配置文件结构小结
2022/04/08 Servers