js中使用其他页面传递的URL.createObjectURL地址,下载文件不生效
时间: 2023-11-11 22:09:45 浏览: 75
用JS在浏览器中创建下载文件
在 JavaScript 中使用 `URL.createObjectURL` 创建的 URL 是一个临时的 URL,它只在当前浏览器窗口或标签页中有效。当用户关闭该窗口或标签页时,这个 URL 就会失效。
如果你想要下载这个 URL 对应的文件,可以通过创建一个 `a` 标签,设置 `href` 属性为这个 URL,然后调用 `click` 方法触发下载:
```javascript
var downloadLink = document.createElement('a');
downloadLink.href = url;
downloadLink.download = filename;
document.body.appendChild(downloadLink);
downloadLink.click();
```
注意,这种方法需要用户手动点击下载链接才能下载文件。如果你需要自动下载文件,可以使用 `XMLHttpRequest` 或 `fetch` 发起一个 GET 请求,将响应数据写入到 `Blob` 中,然后创建一个 `URL` 对象并设置 `href` 属性,最后调用 `click` 方法触发下载:
```javascript
fetch(url)
.then(response => response.blob())
.then(blob => {
var downloadLink = document.createElement('a');
downloadLink.href = URL.createObjectURL(blob);
downloadLink.download = filename;
document.body.appendChild(downloadLink);
downloadLink.click();
});
```
阅读全文