需求里包括文件下载导出excel表格,现在总结一下
优采云 发布时间: 2021-05-16 23:31需求里包括文件下载导出excel表格,现在总结一下
此问题的要求包括文件下载和导出excel表格,现总结如下:
1) window.open()和window.location.href链接以获取详细信息:
window.open()将在下载文件时打开一个新页面,并同时公开链接地址,并在文件下载过程中两次访问该链接。尽管前端仅下载一次文件,但该服务将生成2个文件。
2)表格
使用动态生成的表单元素提交表单并完成下载。请注意,此处将没有ajax。原则是仅提交表单。
因为jQery的ajax函数和ajaxSubmit函数的返回类型(数据类型),所以只有xml,text,json,html和其他类型,所以没有'stream'类型,因此仅当我们不能使用对应的类型时,实现ajax下载ajax函数执行文件下载。
但是我们可以通过js生成一个表单,使用该表单提交参数,并返回“ stream”,输入数据。在实施过程中,页面没有刷新。
参考文件:
获取请求
3) a标签(兼容性差,Chrome没问题。百度可用于详细说明)
如果需要在下载文件之前进行一些操作,则需要在click事件中创建一个元素。此时,最好不要在html中收录一个元素,否则a标记的默认事件与a.click()发生冲突,将会出现一些小问题。
4) iframe
如果它是处于get模式的url下载链接,则客户端可以通过动态生成的隐藏iframe获取下载的二进制文件。原理:iframe具有src属性,其本质是发送http请求,获取页面或数据。
上述方法存在一些兼容性问题,并且存在浏览器直接解析.txt和.xml文件的风险。因此,我在Internet上搜索了downloadjs插件,但是我在项目中使用的downloadjs并不易于使用
以上所有方法最好将名利,点击事件提交到异步操作中,例如延迟器。
4)插件download.js(有关详细信息,请参见官方网站:)
npm安装downloadjs
然后通过“ download.js”中的导入下载来导入使用过的文件
最后使用download()方法
名为download(data,strFileName,strMimeType)的下载方法对应于:download(“ data”,“您想要的名称”,“ Mime类型”),当您不编写接下来的两个参数时,可以指定的文件已下载(不支持跨域)。源代码非常简单。如果没有以下参数,它将通过ajax发送一个get请求,以获取url的二进制流,然后将二进制流转换为一个对象以完成下载。