美文网首页收藏前端实践题目
el-upload上传文件并上传到服务端

el-upload上传文件并上传到服务端

作者: autumn_3d55 | 来源:发表于2022-01-10 16:18 被阅读0次

    1. 使用element-ui 的 el-upload 进行上传

    • 注意::http-request 指令的使用
      使用该指令, :on-success, :on-error 指令是不会触发的

    • http-request 覆盖默认的上传行为,可以自定义上传的实现

    • 但是需要将 action置空,action=""

    <el-upload
                  action=" "
                  :show-file-list="false"
                  :http-request="uploadFiles"
                >
                  <div class="upload">
                    <img
                      class="smallImg"
                      src="@/assets/images/whiteCap/icon_gaitouxian.png"
                    />
                    <div>修改头像</div>
                  </div>
    </el-upload>
    
    • methods,调用请求方法
      @params 参数:是http-request 指定自带的成功回调参数。
    async uploadFiles(param) {
          const res = await uploadFiles({ upload: param.file });
          console.log(res);
          if(res.status == "200" && res.data.retStatus == "000") {
            this.userInfo.headPortrait = res.data.retBody.attach;
          }
          // console.log(param.file);
        },
    
    • request.js 封装请求函数
      设置为 multipart/form-data 表单类型。
    //文件上传接口:
    export const uploadFiles = (data) => {
      return service({
        url: '/API/nsps/common/uploadFiles',
        method: 'post',
        data,
        contentType: "multipart/form-data",
      })
    }
    
    • 需要对表单数据就行统一格式化
      在axios请求拦截器统一设置
    //请求拦截
    service.interceptors.request.use((config) => {
        //统一处理表单格式
        if (config.contentType === "multipart/form-data") {
            //formData 表示表单数据的键值对 key/value 的构造方式
            const formData = new FormData();
            //这里遍历一下 因为有可能除了upload 还有其他参数的嘛
            for (let key in config.data) {
                //再一个个append进去
                formData.append(key, config.data[key]);
            }
            //重新赋值给config.data -------return出去
            config.data = formData;
            //这里设置multipart/form-data 表单传数据需要的contentType
            config.headers["Content-Type"] = config.contentType;
        }
        config.responseType && (config.responseType = "blob");
        return config;
    })
    

    相关文章

      网友评论

        本文标题:el-upload上传文件并上传到服务端

        本文链接:https://www.haomeiwen.com/subject/wzwmcrtx.html