js中使用其他的页面传递的Blob 下载不了文件
时间: 2024-01-21 20:18:44 浏览: 161
js blob类型url的视频下载问题的解决
5星 · 资源好评率100%
在 JavaScript 中,使用 Blob 对象可以处理二进制数据,包括文件。如果你使用其他页面传递 Blob 对象来下载文件,你可以尝试以下方法:
1. 使用 URL.createObjectURL() 方法将 Blob 对象转换为 URL,然后使用该 URL 下载文件。示例代码如下:
```
// 假设你已经获取了一个 Blob 对象,比如通过其他页面传递
const blob = ...
// 创建一个链接地址
const url = URL.createObjectURL(blob)
// 创建一个 a 标签,设置下载属性和链接地址
const a = document.createElement('a')
a.setAttribute('download', 'filename')
a.setAttribute('href', url)
// 模拟点击 a 标签进行下载
a.click()
// 释放 URL 对象
URL.revokeObjectURL(url)
```
2. 如果上述方法无法正常下载文件,可以尝试使用 XMLHttpRequest 对象下载文件。示例代码如下:
```
// 假设你已经获取了一个 Blob 对象,比如通过其他页面传递
const blob = ...
// 创建一个 XMLHttpRequest 对象
const xhr = new XMLHttpRequest()
// 设置响应类型为 Blob
xhr.responseType = 'blob'
// 监听 onload 事件,获取 Blob 对象并进行下载
xhr.onload = function() {
const blob = xhr.response
// 创建一个链接地址
const url = URL.createObjectURL(blob)
// 创建一个 a 标签,设置下载属性和链接地址
const a = document.createElement('a')
a.setAttribute('download', 'filename')
a.setAttribute('href', url)
// 模拟点击 a 标签进行下载
a.click()
// 释放 URL 对象
URL.revokeObjectURL(url)
}
// 发送请求
xhr.open('GET', 'blob_url')
xhr.send()
```
以上两种方法都可以尝试一下,看哪种能够正常下载你想要的文件。
阅读全文