好的文字建议:
大约20,000个字 - 源代码解释摘要(继续更多)
组合组合在前端的功能,重新发动30多个技术点的功能
有时,当遇到异步界面时,将返回一个URL地址,然后前端需要基于此URL地址下载文件资源的需求方案。此URL实际上是一个静态资源地址,而不是接口地址,通过后端接口的内部过程。和其他文件)
直接在浏览器窗口中打开URL,您会发现它也直接打开JSON File.txt,js,css等。可访问的静态资源地址也将直接打开(这可以称为预览,两种形式,一张是预览文件,另一个是下载文件),而不是下载。这与资源地址返回方法(响应类型)相关,默认返回可以是字节运行或字符流的形式,并且可以识别此返回表格并由浏览器预览,因此直接打开(执行的预览文件模式)Essence我们可能在图片中更常见。它可以直接在浏览器中打开预览。这也是因为它返回的形式是图片64图片。可以通过浏览器识别。
例如,同一位置的静态资源是JSON,另一个是.zip压缩文件。两个URL,您会在浏览器窗口中找到JSON文件的URL。浏览器执行预览模式并直接打开文件。在浏览器窗口输入.zip压缩文件URL中,浏览器未执行预览模式,而是执行下载模式并直接下载文件。
以下是两个测试的示意图
然后,如果要返回URL(静态资源地址,例如JSON或TXT文件的资源地址),请直接下载而不是预览?
用于处理方案的关键字:异步下载,设置响应型='Blob'。
1.将请求返回方法设置为响应型='blob'。如果未设置,则可能导致下载无法正常打开。
2.可以按需求设置请求地址,请求方法和必要的请求标头参数,例如令牌等。
3.将返回的字节流(字符流)转换为斑点对象
4.因为斑点正在创建资源URL
5.使用此URL创建A标签,模拟点击事件以执行下载
此步骤与我们通常使用的同步下载资源文件一致。下载后,请注意发布BLOB对象的对象。
提示:IE不支持直接下载Blob资源。您可以使用window.navigator.msaveoropenblob(Blob,filename)来解决此问题。
以上代码将在IE执行中自动打开查询窗口。窗口会询问您是下载还是预览。选择下载时,您可以正常下载它。
以下是在IE下载Blob后的屏幕截图
原始:https://juejin.cn/post/709797494709635102