JS下载PDF文件时,浏览器默认会直接打开,下面我封装了下载方法,直接调用downloadFileByUrl(文件地址),即可下载文件。
/** * 获取文件流 * @param url 文件地址 * @param method 请求方法 */ const getBlob = (url:string,method = "GET") => { return new Promise((resolve) => { var xhr = new XMLHttpRequest() xhr.open(method, url, true) xhr.responseType = 'blob' xhr.onload = () => { if (xhr.status === 200) { resolve(xhr.response) } } xhr.send() }) } /** * 保存文件 * @param blob 文件流 * @param filename 文件名称 */ const saveAs = (blob:any, filename:string) => { const nav = (window.navigator as any) if (nav.msSaveOrOpenBlob) { nav.msSaveBlob(blob, filename) } else { const link = document.createElement('a') const body = document.querySelector('body') link.href = window.URL.createObjectURL(blob) // 创建对象url link.download = filename // fix Firefox link.style.display = 'none' body?.appendChild(link) link.click() body?.removeChild(link) window.URL.revokeObjectURL(link.href) // 通过调用 URL.createObjectURL() 创建的 URL 对象 } } /** * 下载文件 * @param url 文件地址 * @param filename 文件名称 * @param method 请求方法 */ export const downloadFileByUrl = (url:string, filename = '',method = "GET") => { getBlob(url,method).then((blob) => { saveAs(blob, filename) }) }
- 热门文章
- Mysql 8.0+开启远程访问
- Vue3+Ts 组合API调用子组件方法
- JAVA生成微信小程序分享海报
- 基于 Vue 实现魔方矩阵排列效果
- JAVA开发微信特约商户进件/提交申请单
- 检查Office(Word/Excel)文档是否需要密码-通...
- Nginx 跨域配置支持
- 微信/v3/merchant/media/upload 网络图片上...
- 简述分布式CAP理论
- Iterator迭代器设计模式
- 我的标签
- JAVA<7>
- Js<4>
- 设计模式<4>
- TS<2>
- nginx<2>
- 微信服务商<2>
- 微信小程序<1>
- Vue<1>
- Vue3<1>
- IPv6<1>
- Apache POI<1>
- Mysql<1>
- rocketmq<1>
- 分布式数据库<1>
- polygon<1>
- 地图<1>
- CAP<1>
- jQuery<1>
- Git<1>
- curl<1>
- 分布式系统<1>
- 设计<0>
- Redis<0>
- HikariCP<0>
- 数据库连接池<0>
- 多线程<0>
- 友情链接
- 江西云戈信息技术