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 相关文章推荐
iframe异步加载实现点击左边菜单加载右边内容实例讲解
Mar 04 Javascript
javascript实现控制的多级下拉菜单
Jul 05 Javascript
JavaScript中的cacheStorage使用详解
Jul 29 Javascript
js格式化时间的方法
Dec 18 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
Jan 04 Javascript
微信小程序 实现点击添加移除class
Jun 12 Javascript
JS加密插件CryptoJS实现的DES加密示例
Aug 16 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
Oct 25 Javascript
微信小程序之几种常见的弹框提示信息实现详解
Jul 11 Javascript
通过实例了解JS执行上下文运行原理
Jun 17 Javascript
JS简易计算器实例讲解
Jun 30 Javascript
vue如何在data中引入图片的正确路径
Jun 05 Vue.js
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
Terran建筑一览
2020/03/14 星际争霸
PHP中防止SQL注入实现代码
2011/02/19 PHP
PHP、Nginx、Apache中禁止网页被iframe引用的方法
2020/10/01 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
Js日期选择自动填充到输入框(界面漂亮兼容火狐)
2013/08/02 Javascript
在JavaScript中重写jQuery对象的方法实例教程
2014/08/25 Javascript
基于jQuery实现的菜单切换效果
2015/10/16 Javascript
js表单提交和submit提交的区别实例分析
2015/12/10 Javascript
JavaScript表单验证实例之验证表单项是否为空
2016/01/10 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
图片懒加载插件实例分享(含解析)
2017/01/09 Javascript
vue项目中导入swiper插件的方法
2018/01/30 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
vue实现点击关注后及时更新列表功能
2018/06/26 Javascript
JavaScript基于对象方法实现数组去重及排序操作示例
2018/07/10 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
angular6 填坑之sdk的方法
2018/12/27 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
利用Python的Django框架生成PDF文件的教程
2015/07/22 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
python制作填词游戏步骤详解
2019/05/05 Python
Python爬虫与反爬虫大战
2020/07/30 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
HTML5 Canvas中使用路径描画二阶、三阶贝塞尔曲线
2015/01/01 HTML / CSS
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
餐饮业会计岗位职责
2013/12/19 职场文书
工程承包协议书范本
2014/09/29 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python
HTML+VUE分页实现炫酷物联网大屏功能
2021/05/27 Vue.js
mongodb的安装和开机自启动详细讲解
2021/08/02 MongoDB
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android
mysql分表之后如何平滑上线详解
2021/11/01 MySQL
动态规划之使用备忘录来改进Javascript函数
2022/04/07 Javascript