18910140161

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

顺晟科技

2021-07-09 11:25:47

89

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

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

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

参数实在是不能简洁化的话,那就只能用post来下载了.这里借助了axios,responseType需要设置为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模拟表单提交不久可以了吗

我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航