饿了么Element UI之Upload组件图片上传【原创】

图片文件换汤不换药,只要注意前端的写法即可

1.饿了么组件可以利用 http-request 的属性对上传进行自定义 :http-request="uploadFile"

2.设置文件FormData对象传入请求

const formdata = new FormData();
const file = params.file;
formdata.append("file", file);

3.全部代码

<template>
  <div style="margin-top:5%">
    <el-upload
      :onError="uploadError"
      :onSuccess="uploadSuccess"
      class="upload-demo"
      ref="upload"
      :auto-upload="false"
      accept=".eml"
      multiple
      :before-upload="beforeUpload"
      action=" "
      :http-request="uploadFile"
    >
      <el-button slot="trigger" size="small" type="primary">----</el-button>
      <el-button slot="trigger" size="small" type="primary">----</el-button>
      <el-button slot="trigger" size="small" type="primary">----</el-button>
      <el-button slot="trigger" size="small" type="primary">----</el-button>
      <el-button slot="trigger" size="small" type="primary">选取邮件</el-button>

      <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传邮件</el-button>
      <div slot="tip" class="el-upload__tip">可以同时上传多个eml文件至服务器</div>
    </el-upload>
  </div>
</template>
<script>
import axios from "axios";
export default {
  data() {
    return {};
  },
  computed: {
    //进入的用户
    userSO_json() {
      let userSO_json = JSON.parse(sessionStorage.getItem("userSO_json"));
      return userSO_json;
    }
  },
  methods: {
    /**
     * 自定义:http-request="uploadFile"之后,回调方法暂且失效,所以提示信息应该写在axios里面
     */
    // 上传成功后的回调
    uploadSuccess(response, file, fileList) {
      console.log("上传文件", response);
      this.$message({
        showClose: true,
        message: "恭喜你,邮件上传成功",
        type: "success"
      });
    },
    // 上传错误后的回调
    uploadError(err, file, fileList) {
      if (err.message != "") {
        this.$message.warning(err.message);
      } else {
        this.$message.warning("网络错误,不能访问");
      }
    },
    uploadFile(params) {
      const formdata = new FormData();
      const file = params.file;
      formdata.append("file", file);
      axios
        .post("/api/EmlUploadController/uploadFile?userName="+this.userSO_json.userName, formdata, {
          headers: {
            //头部信息
            "Content-Type": "multipart/form-data",
            token: this.userSO_json.token
          }
        })
        .then(response => {
          this.$message({
            showClose: true,
            message: "恭喜你,邮件上传成功",
            type: "success"
          });
        })
        .catch(error => {
          //前端的token留在点击退出按钮那里删除,这里就只是提示过期
          if (error.message != "") {
            this.$message.warning("此封一模一样邮件你已经上传过了");
          } else {
            this.$message.warning("后端token过期,请重新登录");
          }
        });
    },
    //添加任务
    async beforeUpload(file) {
      console.log("beforeUpload");
      // const extension = file.name.split(".")[1] === "eml";
      // const isLt2M = file.size / 1024 / 1024 < 10;
      // if (!extension) {
      //   console.log("上传邮件只能是 eml格式!");
      // }
      // if (!isLt2M) {
      //   console.log("上传邮件大小不能超过 10MB!");
      // }
      // return extension && isLt2M;
    },

    //提交
    submitUpload() {
      this.$refs.upload.submit();
    }
  }
};
</script>
<style scoped>
.el-table--border,
.el-table--group {
  border: none;
}
.el-table__header-wrapper th:nth-last-of-type(2) {
  border-right: none;
}
.el-table--border td:nth-last-of-type(1) {
  border-right: none;
}
.el-table--border::after,
.el-table--group::after {
  width: 0;
}
.el-select .el-input {
  width: 180px;
}
.input-with-select .el-input-group__prepend {
  background-color: #fff;
}
.input-with-select {
  margin-left: -5px;
}
.select {
  margin-left: 0px;
}
.input-with-select {
  background-color: #fff;
  width: 390px;
}
.pagination {
  height: 80px;
  text-align: center;
}
.choose {
  float: left;
}
.upload-demo {
  float: left;
}
.button1 {
  left: 40%;
}
.button2 {
  text-align: center;
}
.divider {
  margin: 0;
}
.conditionalQuery {
  float: right;
  height: 60px;
  margin-right: 80px;
}
</style>

原文地址:https://www.cnblogs.com/yanl55555/p/12544254.html

时间: 2024-12-02 12:10:02

饿了么Element UI之Upload组件图片上传【原创】的相关文章

关于vue-element-admin的采坑记录-upload组件图片上传问题

个人博客里部分内容用到了图片上传 那就需要用到vue-element-admin中的upload组件 首先我们需要在需要到图片上传的vue文件里引入upload组件 并使用标签的形式使用该组件 通过v-model绑定image属性 <template> <div class="createPost-container"> <Upload v-model="image"/> </div> </template>

vue+element ui +vue-quill-editor 富文本图片上传到骑牛云

vue-quill-editor上传图片会转换成base64格式,但是这不是我们想要的,之后翻了很多文章才找到想要的,下面直接上代码 <style lang="sass">.quill-editor min-height: 500px background:#fff .ql-container min-height: 500px .ql-snow .ql-editor img max-width: 480px .ql-editor .ql-video max-width:

Layui upload多图片上传, 传参后台接受不到

Layui upload动态传参,后台接收不到,解决方法 这里参数动态($(#).val())拿去不到,除非写死,必须要用before从新赋值 layui.config({ base: '/Assets/layui/' //静态资源所在路径 }).extend({ index: 'lib/index' //主入口模块 }).use(['index', 'upload'], function () { var $ = layui.jquery , upload = layui.upload; va

(10 Android)实验项目_Android UI与Activity组件(上)

(10 Android)实验项目_Android UI与Activity组件(上) 一.实验目的 (1) 掌握常用的布局方法. (2) 掌握Activity组件的生命周期. 二.实验内容及步骤 在Android Studio中,新建名为Example3的项目,然后在此项目中完成如下几个模块的设计: 1.掌握各种布局的特点.Android常用控件的使用 (1) 在项目里,新建名为example3_1的模块. (2) 在默认的约束布局里,添加垂直线性布局并内嵌水平线性布局,然后依次添加文本框.下拉列

图片预览 base64 element 图片上传 预览图

https://www.jianshu.com/p/bee8c393c422 感谢 使用了element ui,愿望是   选择图片文件之后,不立即上传,先显示预览图,点击上传按钮之后再上传,element版本是2.13 用到了 URL.createObjectURL(file.raw) html <el-upload class="avatar-uploader" action="https://jsonplaceholder.typicode.com/posts/&

SpringMVC基于zyUpload组件实现上传

之前公司做一项目 要求需要预览功能上传多张图片,网上查了很多资料,在这个http://www.52doit.com/show/341网站找到了一个html5写的组件,感觉还不错,对ie支持不是很好效果还可以.感觉还不错 就用它了,将他源码进行改进哈,搞成自己想要的效果,谢谢这位仁兄的提供. 看效果吧: 页面需要做的 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <tit

VUE2.0+VUE-Router做一个图片上传预览的组件

之前发了一篇关于自己看待前端组件化的文章,但是由于学习和实践的业务逻辑差异,所以自己练习的一些demo逻辑比较简单,打算用vue重构现在公司做的项目,所以在一些小的功能页面上使用vue来做的,现在写的这个是项目中用户反馈功能而来的,收获还是挺多的. 收获:dom操作=>数据操作       router的使用       组件的使用,具体总结放在尾部. 功能:1.上传图片 2.显示缩略图 3.可以删除 4.可以重新选择文件 先上成品图(主要抽取图片这块),自己在家主要做的功能,样式就不计较了.

commons-io在struts框架中无法获取upload.parseRequest(request)上传的文件解决方案

commons-io在struts框架中无法获取upload.parseRequest(request)上传的文件的主要原因是因为struts将request进行了封装,在文件上传时struts会将HttpServletRequest请求被转成了MultiPartRequestWrapper,所以如需使用request,则需要将struts封装好的的MultiPartRequestWrapper转换成HttpServletRequest,这里需要实行两部操作: 操作一:创建java类,继承Jak

vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理

一.前言 三年.net开发转前端已经四个月了,前端主要用webpack+vue,由于后端转过来的,前端不够系统,希望分享下开发心得与园友一起学习. 图片的上传之前都是用的插件(ajaxupload),或者传统上传图片的方式,各有利弊:插件的问题是依赖jq并且会使系统比较臃肿,还有传统的web开发模式 前后端偶尔在一起及对用户体验要求低,现在公司采用webpack+vue+restfullApi开发模式 前后端完全分离,遵从高内聚,低偶尔的原则,开发人员各司其职,一则提升开发效率(从长期来看,短期