前面大家也看到了,我比较喜欢用form提交来下载,虽然会带来一个标签页的问题,但是form支持POST方式提交,传参比GET方式要好用一些,特别是在body里传参数可以不用考虑编码问题,在一些汉字等特殊字符场景中有优势。
如果不用考虑编码方案或者有好的解决方案,仅用query和params就足够的话,那么可以用GET方式的A元素点击或者iframe元素加载来触发浏览器下载。个人推荐iframe方式,基本上这种加载的方式浏览器不会阻止,而A元素模拟点击可能有被浏览器拦截的情况。还有就是注意GET方式是支持缓存的,如果下载还需要SSE通道通知前端,那么注意规避缓存,可以采用在url中附加随机参数来解决。
下面给出一个iframe下载的简单demo
function myFuncDownload(filename) {
let iframe = document.createElement('iframe');
iframe.src = '/fs/getfile/'+myencode(filename)+"/" + new Date().getTime();
iframe.style.display = 'none';
document.body.appendChild(iframe);
iframe.addEventListener('load', function() { document.body.removeChild(iframe); });
}
这个是采用params传参,带上了时间戳
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 关于JS触发浏览器流文件下载的方式
发表评论 取消回复