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 相关文章推荐
基于jquery的自定义鼠标提示效果 jquery.toolTip
Nov 14 Javascript
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
Jan 08 Javascript
使用Post提交时须将空格转换成加号的解释
Jan 14 Javascript
javascript实现修改微信分享的标题内容等
Dec 11 Javascript
jquery实现页面常用的返回顶部效果
Mar 04 Javascript
Bootstrap3.0学习教程之JS折叠插件
May 27 Javascript
vuejs动态组件给子组件传递数据的方法详解
Sep 09 Javascript
livereload工具实现前端可视化开发【推荐】
Dec 23 Javascript
Validform验证时可以为空否则按照指定格式验证
Oct 20 Javascript
利用ES6实现单例模式及其应用详解
Dec 09 Javascript
jQuery实现的模仿雨滴下落动画效果
Dec 11 jQuery
ES6 proxy和reflect的使用方法与应用实例分析
Feb 15 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+MySql编写聊天室
2006/10/09 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
php中socket通信机制实例详解
2015/01/03 PHP
详解php比较操作符的安全问题
2015/12/03 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
简单的前端js+ajax 购物车框架(入门篇)
2011/10/29 Javascript
extjs两个tbar问题探讨
2013/08/08 Javascript
不使用ajax实现无刷新提交表单
2014/12/21 Javascript
jQuery实现图片加载完成后改变图片大小的方法
2016/03/29 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
Vue.js每天必学之指令系统与自定义指令
2016/09/07 Javascript
使用jquery.qrcode.js生成二维码插件
2016/10/17 Javascript
详解Vue路由钩子及应用场景(小结)
2017/11/07 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
JavaScript JMap类定义与使用方法示例
2019/01/22 Javascript
Vue插件从封装到发布的完整步骤记录
2019/02/28 Javascript
Vue实现拖放排序功能的实例代码
2019/07/08 Javascript
用Python进行基础的函数式编程的教程
2015/03/31 Python
Python基于matplotlib实现绘制三维图形功能示例
2018/01/18 Python
python 通过logging写入日志到文件和控制台的实例
2018/04/28 Python
python实现Zabbix-API监控
2018/09/17 Python
Python格式化输出字符串方法小结【%与format】
2018/10/29 Python
Python+OpenCV实现将图像转换为二进制格式
2020/01/09 Python
python如何查看网页代码
2020/06/07 Python
matplotlib绘制正余弦曲线图的实现
2021/02/22 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
python绘制汉诺塔
2021/03/01 Python
html5之Canvas路径绘图、坐标变换应用实例
2012/12/26 HTML / CSS
举例详解HTML5中使用JSON格式提交表单
2015/06/16 HTML / CSS
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
eBay德国站:eBay.de
2017/09/14 全球购物
泰国时尚电商:POMELO Fashion
2020/03/11 全球购物
农村党支部书记司法四风问题对照检查材料
2014/09/26 职场文书
解除劳动合同证明书
2014/09/26 职场文书
FFmpeg视频处理入门教程(新手必看)
2022/01/22 杂记
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技