document.createElement 流下载
时间: 2023-07-01 17:22:26 浏览: 125
可以通过以下步骤使用 `document.createElement` 实现流式下载:
1. 创建一个 `a` 元素
```javascript
const link = document.createElement('a');
```
2. 设置下载链接的 `href` 属性为文件的 URL
```javascript
link.href = '文件的 URL';
```
3. 设置 `a` 元素的 `download` 属性为文件名
```javascript
link.download = '文件名';
```
4. 将 `a` 元素添加到 DOM 中
```javascript
document.body.appendChild(link);
```
5. 触发 `a` 元素的点击事件
```javascript
link.click();
```
完整的代码示例:
```javascript
const link = document.createElement('a');
link.href = '文件的 URL';
link.download = '文件名';
document.body.appendChild(link);
link.click();
```
相关问题
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <input type="file" id="datafile"> </body> <script> function readInputFile(event) { let file = event.target.files[0]; if (!file) { return; } let reader = new FileReader(); reader.addEventListener('load', event => { let content = event.target.result; alert(content); // 组装a标签 let a= document.createElement("a"); // 设置下载文件名 a.download = "wenj"; a.style.display = "none"; let blob = new Blob([new Uint8Array(content)],{type:'image/png'}) a.href = URL.createObjectURL(blob); document.body.appendChild(a); a.click(); document.body.removeChild(a); }); reader.readAsText(file); } document.getElementById('datafile').addEventListener('change', readInputFile, false); </script> </html> 下载的图片 不支持该格式或图片已损坏
根据你提供的代码,可以看出这是一个文件上传并下载的功能实现。代码中使用了FileReader对象来读取上传的文件内容,然后通过Blob对象将文件内容转换为二进制数据流,最后将二进制数据流作为URL的参数,通过a标签的href属性生成下载链接。
至于下载的图片不支持该格式或已损坏的问题,可能是因为你上传的文件不是PNG格式的图片,或者上传的图片本身就存在问题。你可以尝试上传其他格式的图片,或者检查一下上传的图片是否存在问题。
document.write页面不显示
当页面加载完毕后再次使用`document.write()`会导致页面空白。解决这个问题的方法是使用`document.open()`打开一个新的文档流,然后再使用`document.write()`来写入内容。然而,要注意的是,浏览器主进程和`document`进程不一样,所以执行前先使用`document.open()`是错误的做法。因为文档流关闭后,如果再去执行`document.write()`,会重新打开一个新的文档流,导致之前的页面内容被清空。所以,正确的解决办法是在页面加载完毕后,避免使用`document.write()`来动态修改页面内容,而是使用其他方法来操作DOM元素,比如使用`innerHTML`或者`createElement`等方法来动态插入内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [document.write 页面空白](https://blog.csdn.net/jiawenbo89/article/details/78795646)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文