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

发布于 2022-09-13 00:19:11 字数 248 浏览 26 评论 0

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

猛虎独行 2022-09-20 00:19:11

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

来世叙缘 2022-09-20 00:19:11

参数实在是不能简洁化的话,那就只能用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);
});
给妤﹃绝世温柔 2022-09-20 00:19:11

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

抠脚大汉 2022-09-20 00:19:11

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文