记录一个导出乱码问题

236 阅读1分钟

在swagger-ui中没有问题,但是自己导出的文件是中文乱码。

需要加上responseType: "blob",注意位置

axios({
      method: "post",
      url: url,
      params: params,
      responseType: "blob"
    })
      .then(res => {
        resolve(res.data);
      })
      .catch(err => {
        reject(err.data);
      });
  });

input上传file内容为空问题,将file添加到formData,后端下载将直接返回在res.data中,直接下载

<input
      type="file"
      name="avatar"
      accept="xsl"
      style="display: none"
      @change="changeImage($event)"
      ref="avatarInput"
    />
     changeImage(event) {
      this.importLoad = true;
      let formData = new FormData();
      const file = event.target.files[0];
      let suffixName = file.name.substring(file.name.lastIndexOf(".") + 1); // 得到文件后缀名 */
      if (suffixName !== "xls") {
        this.$Notice.warning({
          title: '提示',
          desc: '上传文件只能是xls格式'
        });
        this.importLoad = false;
        return;
      }
      formData.append("file", file);
      formData.append("pkAccounts", this.pkAccounts);
      this.$refs.avatarInput.value = null; // 移除文件
      axios({
        method: "post",
        url: "/PE0801/importExcel",
        data: formData,
        responseType: "blob"
      })
        .then((res) => {
          this.importLoad = false;
          if (res.status == 200) {
            this._makeA(res.data, "xls");
          } else {
            this.$Notice.error({
              title: "上传失败",
              desc: res.message
            });
          }
        })
        .catch((err) => {
          console.log(err);
        });
    },