本文主要是介绍关于JS触发浏览器流文件下载的方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前面大家也看到了,我比较喜欢用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触发浏览器流文件下载的方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!