el-upload上传文件类型大小限制+手动上传+通过后端给的接口带参数

这篇具有很好参考价值的文章主要介绍了el-upload上传文件类型大小限制+手动上传+通过后端给的接口带参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先看效果图:

el-upload上传文件类型大小限制+手动上传+通过后端给的接口带参数


 文章来源地址https://www.toymoban.com/news/detail-478086.html

项目需求:

本地上传文件类型只能是 xml 和 a2l 的 做多上传个数为2个 可以多选上传 每种格式最多上传一个文件 上传为手动上传到服务器 上传错误有相应的提示


需求分析:

  首先上传为手动上传那么文件类型我是打算在选取文件到前端页面的过程中我就处理文件 或者也    可以在上传服务器的时候做判断 我这里选择选取文件的时候做判断 ①是为了展示正确不会有不      满足我需求的文件显示在前端页面用户体验不好 ②是为了在服务器之前处理的话要用到 before-      upload (上传文件之前的钩子,参数为上传的文件,若返回 false 或者返回 Promise 且被              reject,则停止上传)钩子函数 而 before-upload 必须有  action (必选参数,上传的地址)才能    触发 而我手动上传我需要通过接口传参所以我不想使用action 填写地址 会有很多不变

  1.上传为手动上传到服务器   :auto-upload="false";

  2.多选上传  :multiple="true"  默认为true

  3.文件类型  accept=".xml,.a2l"

  4.做多上传个数为2个并提示  :limit="2"   :on-exceed="limitCheck" 文件超出个数限制时的钩子

  5.上传错误有相应的提示并且每种格式最多上传一个文件  :on-change="changefile" 文件状态          改变时的钩子,添加文件、上传成功和上传失败时都会被调


代码展示:

            <el-upload
              ref="upload"
              :action="url"
              :before-remove="beforeRemove"
              :on-change="changefile"
              accept=".xml,.a2l"
              :limit="2"
              :on-exceed="limitCheck"
              :auto-upload="false"
              :multiple="true"
              :file-list="fileList">
              <el-button
                slot="trigger"
                size="mini"
                type="primary"
                style="letter-spacing: 1px"
                >选取xml/a2l文件</el-button>
              <el-button
                style="margin-left: 10px"
                size="mini"
                type="success"
                :loading="submitebtn"
                :disabled="this.fileList.length == 0"
                @click="submitUpload"
                >上传配置</el-button>
              <h4 slot="tip" class="el-upload__tip">
                只能上传xml/a2l文件
              </h4>
            </el-upload>
data(){
  return{
    url: "",//action 设置为空字符串即可
    fileList: [],//展示在页面上的文件 操作可以对 文件进行 相应的展示和删除
  }
}

 

 

methods:{
    // 选择的文件超出限制的文件总数量时触发
    limitCheck() {
      this.$message.warning("最多只能上传2个文件");
    },
    // 上传到服务器
    submitUpload() {
      this.submitebtn = true;
      let formData = new FormData();
      console.log(this.fileList);
      let newname = this.fileList[0].raw.name;
      let filea2L = {};
      let fileXML = {};
      if (newname.substring(newname.lastIndexOf(".")) === ".a2l") {
        filea2L = this.fileList[0].raw;
        fileXML = this.fileList[1] ? this.fileList[1].raw : {};
      } else {
        filea2L = this.fileList[1] ? this.fileList[1].raw : {};
        fileXML = this.fileList[0].raw;
      }
      console.log(fileXML);
      formData.append("a2lFile", filea2L);
      formData.append("soaXml", fileXML);
      formData.append("projectId", this.projectId);
      this.postRequest("/file/upload", formData).then((res) => {
        console.log(res);
        if (res.code == 0) {
          this.$message({
            dangerouslyUseHTMLString: true,
            message:`<h4>文件上传成功</h4><h4>${filea2L.name?filea2L.name:''}</h4> 
                     <h4>${fileXML.name?fileXML.name:''}</h4>`,
            type:'success',
            duration:3500
          });
          this.submitebtn = false;
        } else {
          this.$message.error(res.message);
          this.submitebtn = false;
        }
      });
    },
    // 文件列表移除文件时的钩子
    handleRemove(file, fileList) {
      console.log(file, fileList);
      this.fileList = fileList;
    },
    // 点击文件列表中已上传的文件时的钩子
    handlePreview(file) {
      console.log(file);
    },
    // 删除文件之前的钩子,参数为上传的文件和文件列表,若返回 false 或者返回 Promise 且被 
    reject,则停止删除。
    beforeRemove(file, fileList) {
      console.log(file);
      console.log(fileList);
      return this.$confirm(`确定移除 ${file.name}?`);
    },
    // 选取文件改变时的操作 可以判断文件类型是否 把不符合的删除缓存 fileList 就是页面缓存的文件
    changefile(file, fileList) {
      console.log(file);
      console.log(fileList);
      let arr = [];
      fileList.forEach((item, index) => {
        let endname = item.raw.name.substring(item.raw.name.lastIndexOf("."));
        arr.push(endname);
        if (endname != ".a2l" && endname != ".xml") {
          this.$message.error("上传文件格式只能是 xml 、a2l 格式!");
          fileList.splice(index, 1);
        }
      });
      console.log(arr);
      if (new Set(arr).size != fileList.length) {
        fileList.splice(-1);
        this.$message.warning("选取失败 ! 相同格式的最多上传一次");
      }
      console.log(fileList);
      this.fileList = fileList;
    },
}

到了这里,关于el-upload上传文件类型大小限制+手动上传+通过后端给的接口带参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3 el-upload 上传附件及预览 限制只能上传一个图片或者pdf格式的文件

    效果如图 直接看代码吧 template部分 css部分 js部分

    2024年02月11日
    浏览(86)
  • Vue3使用ElementPlus中的el-upload手动上传并调用上传接口

    实体类 定义接口 上传文件并插入数据库数据

    2024年01月20日
    浏览(60)
  • elementui el-upload 上传文件

    在使用element中的el-upload上传文件或者图片时,需要先把el-upload的自动上传改为手动上传:auto-upload=“false”然后el-upload内部会调用this.$refs.upload.submit();方法,从而实现多个文件上传。 提示:以下是本篇文章正文内容,下面案例可供参考 代码如下(示例): 需要注意的是 acce

    2024年02月06日
    浏览(53)
  • el-upload实现上传文件夹

    背景:如图一所示,最下面有一个黄色上传文件按钮,为手动上传而且上传区域有上传文件和上传文件夹的区分 所以需要在点击了上传文件夹做特殊处理使得el-upload可以上传文件夹 01.在拖拽上传的区域绑定一个点击事件 handlePreview ,(注意不要直接绑定在el-upload区域,会被触

    2024年02月07日
    浏览(58)
  • el-upload上传文件携带额外参数

    在进行文件上传时,需要传递其他参数,比如下图中需要实现携带下拉框的参数 前端实现:将下拉框中的参数 传递到:data中  :data=\\\"{\\\'script_model\\\':script_model}\\\"    后端实现: 从post请求中获取携带的参数:  script_model = request.POST.get(\\\'script_model\\\')

    2024年02月11日
    浏览(59)
  • el-upload 文件上传组件的使用

    element-ui官网 element ui=upload上传组件 Upload 上传文件这个功能是我们在企业实际开发当中使用频率是非常高的这样一个文件上传的功能,,element ui组件组也给我们提供了上传的组件。所有我们一定要熟悉掌握它 使用之前先进行一下element ui的安装和配置 打开终端=输入npm i elem

    2024年02月11日
    浏览(75)
  • 使用el-upload组件实现递归多文件上传

    一、需求描述:在页面上点击按钮弹出选择电脑文件的界面,可以一次性选择多个文件一起上传到服务器上,并把上传成功的文件展示在页面上。 · 二、 问题阐述:el-upload是支持多文件上传的,但是是同步进行的,你点击上传按钮,选择了多个文件后点击确定,会同时调用

    2023年04月08日
    浏览(39)
  • el-upload实现上传文件并展示进度条

    el-upload在实现文件上传时无法触发on-progress钩子,即使调用后端接口并成功的情况下都无法触发,可以通过如下配置来解决: 随后将config添加至调用后端接口,即可成功获取进度~ html: JS部分

    2024年02月04日
    浏览(37)
  • el-upload自定义上传文件显示进度条

    el-upload自定义上传文件时需要显示进度条,但使用 http-request 会覆盖默认的上传行为, on-progress 也就不生效了,所以可以 自定义上传的实现 。 按钮 数据 事件 导入接口 接口方法 uploadEvent ——在封装的axios请求方法的headers里面加入即可(关键)

    2024年02月15日
    浏览(44)
  • element-ui文件上传el-upload

            element-ui官网中有文件上传         首先先展示一下我页面的实现效果,如下图所示:          从图中可以看出,我这边实现的是一个可显示进度条的文件上传操作,而且如果上传的文件很大等,还可以中断文件上传。         值得注意的是,如果有添

    2024年02月05日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包