• 众里寻他千百度,蓦然回首,那人却在灯火阑珊处:上传の方法


    0. 缘起

    之前做过一个fabric.js小画板,里面用到了上传图片作为画板底图的效果。但怎么本地上传至服务器,我还真不会。要用到,于是搜索了一波,但是发现那些搜索结果,大同小异地看起来都很麻烦,想到之前组长项目里也用到过类似效果,不如观摩观摩学习学习。

    1. 过程

    // template
            <el-upload
              class="upload-demo"
              drag
              :action="url"
              :auto-upload="true"
              :show-file-list="false"
              :on-success="onSuccess"
              :on-error="onError"
              :headers="headers"
              :before-upload="onBefore"
              accept=".xlsx, .xls"
            >
              <i class="el-icon-upload"></i>
              <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
            </el-upload>
    
     methods: {
        onSuccess(response) {
          if (response.success) {
            this.$message.success({
              message: "文件上传成功",
              duration: 1000,
            });
          } else {
            this.$message.error(response.message);
          }
          this.loading.close();
        },
        // 错误响应
        onError() {
          this.$message.error({
            message: "文件上传失败",
            duration: 1000,
          });
          this.loading.close();
        },
        // 准备阶段
        onBefore() {
          this.loading = this.$loading({
            lock: true,
            text: "文件上传中...",
            spinner: "el-icon-loading",
            background: "rgba(0, 0, 0, 0.7)",
          });
        },
    

    2. 想法

    导出直接就是点击下载,没啥好说的。
    ↑图样图森破了,导出更难。。。
    那么轻,那么重:图片下载与压缩包下载 - 乐盘游 - 博客园 (cnblogs.com)

    我擦,我竟然以为element的上传只能传图片,我是铁憨憨!

    3. 进阶

    3.1 如果需要传query

    直接在el-upload标签的action中,用模板字符串拼出来

                :action="`/xy/box/yinling/point/import?boxId=${boxId}`"
    
    

    3.2 如果头需要传别的参数

                :headers="getHeaders()"
    
    // Methods
        getHeaders() {
          return { boxId: this.boxId };
        },
    

    3.3 有name要求

    比如

    #请求参数 file:excelFile

     name="excelFile"
    

    3.4 总览

              <el-upload
                class="upload-demo"
                name="excelFile"
                :headers="getHeaders()"
                :action="`/xy/box/yinling/point/import?boxId=${boxId}`"
                :auto-upload="true"
                :show-file-list="false"
                :on-success="onSuccess"
                :on-error="onError"
                :before-upload="onBefore"
                accept=".xlsx, .xls"
              >
                <el-button type="primary">导入</el-button>
              </el-upload>
    
    人生到处知何似,应似飞鸿踏雪泥。
  • 相关阅读:
    [leetcode-648-Replace Words]
    [leetcode-647-Palindromic Substrings]
    [leetcode-646-Maximum Length of Pair Chain]
    [leetcode-645-Set Mismatch]
    [leetcode-459-Repeated Substring Pattern]
    [leetcode-636-Exclusive Time of Functions]
    [leetcode-644-Maximum Average Subarray II]
    iOS开发之使用XMPPFramework实现即时通信(三)
    Oracle 内置sql函数大全
    Oracle 中的sql函数以及分页
  • 原文地址:https://www.cnblogs.com/lepanyou/p/15740495.html
Copyright © 2020-2023  润新知