vue+element-ui+axios实现图片上传


Posted in Javascript onAugust 20, 2019

本文实例为大家分享了vue+element-ui+axios实现图片上传的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Examples</title>
<meta name="description" content="">
<meta name="keywords" content="">
<!-- 引入vue -->
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<!-- 引入axios -->
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<!-- 引入样式 -->
<link rel="stylesheet" href=https://unpkg.com/element-ui/lib/theme-chalk/index.css >
<!-- 引入组件库 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
</head>
<body>
 <div id="app">
  <el-upload
   :action="posterUrl"
   :before-upload="beforeUpload"
   :http-request="(params)=>uploadImage(params)"
   :on-remove="(file, fileList)=>removeImage(file, fileList)"
   list-type="picture"
   accept="image/*"
  >
   <el-button size="small">选择图片</el-button>
  </el-upload>
 </div>
 
<script type="text/javascript">
 new Vue({
  el: '#app',
  data: {
   posterUrl: '',
   imgUrls: [],
   imgWidth: '320',
   imgHeight: '400',
  },
  methods: {
   beforeUpload(file) {
    let _this = this;
    let _checkSize = false; //是否需要指定上传图片的尺寸
    if(file.size > 1024*500) { //大小超过500kb
     _this.$message.error('图片太大,请重新选择');
     return false;
    }
    const isSize = new Promise((resolve, reject)=>{
     let _URL = window.URL || window.webkitURL;
     let img = new Image();
     img.onload = function () {
      if(!_checkSize || (_checkSize && img.width==_this.imgWidth && img.height==_this.imgHeight)) {
       resolve();
      }
      else {
       reject();
      }
     }
     img.src = _URL.createObjectURL(file);
    }).then(()=>{
     return file;
    }, ()=>{
     _this.$message.error('图片尺寸不对,请重新选择');
     return Promise.reject();
    });
    return isSize;
   },
 
   uploadImage(params) {
    console.log(params);
    let uploadData = new FormData();
    uploadData.append('file', params.file);
    let config = {
     headers: {
      'Content-Type': 'multipart/form-data'
     }
    };
    this.uploadPoster('homed'+new Date().getTime()+'/'+params.file.name, uploadData, config)
    .then(res=>{
     if(res.status == 200) {
      params.onSuccess();
      this.imgUrls.push({name:params.file.name, url:res.data.url});
      console.log(this.imgUrls);
     }
    }).catch(error=>{
     params.onError();
     this.$message.error('上传失败');
    });
   },
 
   removeImage(file, fileList) {
    console.log(fileList);
   },
 
   uploadPoster(url, obj, config) {
    let poster_upload_path = "http://xxxxxxxxxxxx/httpdocsup/poster/news/";
    return axios.post(poster_upload_path+url, obj, config);
   }
  }
 })
</script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript多线程的实现方法
May 08 Javascript
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
Jul 26 Javascript
深入分析js中的constructor和prototype
Apr 07 Javascript
jquery简单瀑布流实现原理及ie8下测试代码
Jan 23 Javascript
JS小游戏之象棋暗棋源码详解
Sep 25 Javascript
javascript实现简单的贪吃蛇游戏
Mar 31 Javascript
Jquery uploadify上传插件使用详解
Jan 13 Javascript
浅谈js数据类型判断与数组判断
Aug 29 Javascript
javascript中的replace函数(带注释demo)
Jan 07 Javascript
利用Decorator如何控制Koa路由详解
Jun 26 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
Sep 02 Javascript
JavaScript仿京东秒杀倒计时
Mar 17 Javascript
vue element upload实现图片本地预览
Aug 20 #Javascript
JS中的算法与数据结构之集合(Set)实例详解
Aug 20 #Javascript
Vue + Element UI图片上传控件使用详解
Aug 20 #Javascript
微信小程序项目总结之记账小程序功能的实现(包括后端)
Aug 20 #Javascript
ES6中Symbol、Set和Map用法详解
Aug 20 #Javascript
Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义
Aug 20 #Javascript
node中使用log4js4.x版本记录日志的方法
Aug 20 #Javascript
You might like
上传多个文件的PHP脚本
2006/11/26 PHP
菜鸟学PHP之Smarty入门
2007/01/04 PHP
Mysql数据库操作类( 1127版,提供源码下载 )
2010/12/02 PHP
关于PHP堆栈与列队的学习
2013/06/21 PHP
php算法实例分享
2015/07/14 PHP
Jquery CheckBox全选方法代码附js checkbox全选反选代码
2010/06/09 Javascript
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
使用javascript实现监控视频播放并打印日志
2015/01/05 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
简单分析javascript面向对象与原型
2015/05/21 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
一些可能会用到的Node.js面试题
2019/06/15 Javascript
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
Python 列表理解及使用方法
2017/10/27 Python
django开发教程之利用缓存文件进行页面缓存的方法
2017/11/10 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
python批量从es取数据的方法(文档数超过10000)
2018/12/27 Python
使用python接入微信聊天机器人
2020/03/31 Python
python循环嵌套的多种使用方法解析
2019/11/29 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
keras slice layer 层实现方式
2020/06/11 Python
Python爬虫过程解析之多线程获取小米应用商店数据
2020/11/14 Python
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
网络教育毕业生自我鉴定
2013/10/10 职场文书
机电工程学生自荐信范文
2013/12/07 职场文书
营业员实习自我鉴定
2013/12/07 职场文书
施工工地安全标语
2014/06/07 职场文书
网络销售员岗位职责
2015/04/11 职场文书
企业法人任命书
2015/09/21 职场文书
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS