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 相关文章推荐
javascript 打印页面代码
Mar 24 Javascript
Javascript 加载和执行-性能提高篇
Dec 28 Javascript
js左侧三级菜单导航实例代码
Sep 13 Javascript
一个判断抢购时间是否到达的简单的js函数
Jun 23 Javascript
详细解读JavaScript编程中的Promise使用
Jul 27 Javascript
jQuery下拉友情链接美化效果代码分享
Aug 26 Javascript
js实现文字向上轮播功能
Jan 13 Javascript
关于iframe跨域POST提交的方法示例
Jan 15 Javascript
web前端vue之vuex单独一文件使用方式实例详解
Jan 11 Javascript
vue项目中常见问题及解决方案(推荐)
Oct 21 Javascript
使用Vue实现简单计算器
Feb 25 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
Dec 30 Vue.js
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 转换字符串编码 iconv与mb_convert_encoding的区别说明
2011/11/10 PHP
php调整服务器时间的方法
2015/04/03 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
PHP实现登陆表单提交CSRF及验证码
2017/01/24 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
jQuery源码解读之removeClass()方法分析
2015/02/20 Javascript
javascript实现画不相交的圆
2015/04/07 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
2016/10/29 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
JavaScript实现弹出广告功能
2017/03/30 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python自动翻译实现方法
2016/05/28 Python
python 设置文件编码格式的实现方法
2017/12/21 Python
python删除列表元素的三种方法(remove,pop,del)
2019/07/22 Python
利用python在excel中画图的实现方法
2020/03/17 Python
QML用PathView实现轮播图
2020/06/03 Python
利用CSS3实现毛玻璃效果示例源码
2016/09/25 HTML / CSS
Topman美国官网:英国著名的国际平价时尚男装品牌
2017/12/22 全球购物
意大利网上书店:LaFeltrinelli
2020/06/12 全球购物
PHP中如何创建和修改数组
2012/05/02 面试题
早读迟到检讨书
2014/01/24 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
师德先进个人事迹材料
2014/12/19 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python
MySQL数据库完全卸载的方法
2022/03/03 MySQL
详解python的异常捕获
2022/03/03 Python
golang用type-switch判断interface的实际存储类型
2022/04/14 Golang