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函数
Aug 01 Javascript
javaScript call 函数的用法说明
Apr 09 Javascript
jQuery 打造动态渐变按钮 详细图文教程
Apr 25 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
Oct 11 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
Aug 23 Javascript
拥有一个属于自己的javascript表单验证插件
Mar 24 Javascript
Javascript单例模式的介绍和实例
Oct 08 Javascript
jq给页面添加覆盖层遮罩的实例
Feb 16 Javascript
Angular4 中内置指令的基本用法
Jul 31 Javascript
setTimeout与setInterval的区别浅析
Mar 23 Javascript
Angular请求防抖处理第一次请求失效问题
May 17 Javascript
jQuery实现可以扩展的日历
Dec 01 jQuery
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 strtotime 函数UNIX时间戳
2009/01/14 PHP
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
浅谈Laravel队列实现原理解决问题记录
2017/08/19 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
2017/12/31 PHP
初学Javascript的一些总结
2008/11/03 Javascript
JavaScript 应用技巧集合[推荐]
2009/08/30 Javascript
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
jQuery ajax调用WCF服务实例
2014/07/16 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
2016/02/14 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
React-Native做一个文本输入框组件的实现代码
2017/08/10 Javascript
highCharts提示框中显示当前时间的方法
2019/01/18 Javascript
vue滚动固定顶部及修改样式的实例代码
2019/05/30 Javascript
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
[46:32]Fnatic vs OG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python实现获取某天是某个月中的第几周
2015/02/11 Python
python threading模块操作多线程介绍
2015/04/08 Python
浅析python的优势和不足之处
2018/11/20 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
pytorch点乘与叉乘示例讲解
2019/12/27 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
2020/03/09 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
HTML5新增form控件和表单属性实例代码详解
2019/05/15 HTML / CSS
美国汽车交易网站:Edmunds
2016/08/17 全球购物
《三袋麦子》教学反思
2014/03/02 职场文书
小兵张嘎电影观后感
2015/06/03 职场文书
运动会100米加油稿
2015/07/21 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
python基础入门之字典和集合
2021/06/13 Python
golang 语言中错误处理机制
2021/08/30 Golang