下载接口 url 过长,如何解决?

window.open('/api/exportHcReportxx?param=' + JSON.stringify(param));

公司的一段祖传代码,url 过长导致下载出错,现在要改造。
window.open() 又不能改造成 post 请求。
请问,以后针对要下载的场景,有啥简洁的处理方式呢?

阅读 2.9k
4 个回答

自己做个短地址服务,然后open的是短地址,然后再做一个redirect跳转到实际地址即可。

参数实在是不能简洁化的话,那就只能用post来下载了.
这里借助了axiosresponseType需要设置为blob

axios({
        url: '/api/exportHcReportxx', //URL,根据实际情况来
        method: "post",
        data: param,
        responseType: "blob"
      }).then(function (response) {
        const link = document.createElement("a");
        let blob = new Blob([response.data], { type: response.data.type });
        let url = URL.createObjectURL(blob);
        link.href = url;
        link.download = `实际需要的文件名.${response.data.type.split('/')[1]}`;
        link.click();
        document.body.removeChild(link);
});

不能改post的情况下,考虑找后端配合一下,报文压缩一下呢?比如gzip+bas64,怎么也能比原文小很多;或者其他压缩算法

为什么不能改成post
模拟表单提交不久可以了吗

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题