js文件流下载通用方法
```javascript
function downloadFile(url)
var xhr = new XMLHttpRequest(;
js教程removechild
xhr.open('GET', url, true);
sponseType = 'blob';
load = functio
if (xhr.status === 200)
var filename = 'downloaded_file'; // 设置默认文件名
var disposition = ResponseHeader('Content-Disposition');
if (disposition && disposition.indexOf('attachment') !== -1)
var filenameRegex = /filename[^;=\n]*=((['"]).*?\2,[^;\n]*)/;
var matches = (disposition);
if (matches != null && matches[1])
filename = matches[1].replace(/['"]/g, '');
}
}
var blob = sponse;
if (window.navigator.msSaveBlob)
//兼容IE浏览器
window.navigator.msSaveBlob(blob, filename);
} else
var downloadUrl = ateObjectURL(blob);
var link = ateElement('a');
link.href = downloadUrl;
link.download = filename;
document.body.appendChild(link);
link.click(;
setTimeout(functio
//释放URL对象
vokeObjectURL(downloadUrl);
veChild(link);
},100);
}
}
};
xhr.send(;
```
在上面的代码中,我们定义了一个`downloadFile`函数,它接受一个URL作为参数。函数内部通过创建一个XMLHttpRequest对象,然后使用`open`方法打开GET请求,并将`responseType`设置为`blob`,以便能够获取文件的二进制数据。
接着,我们在`onload`事件处理程序中处理服务器响应。首先,我们检查响应状态码是否为200,然后获取响应头中的`Content-Disposition`头信息,以获取文件名。
如果响应头指定了文件名,我们将其解析出来,并用`replace`方法去除文件名中的引号。如果响应头未指定文件名,我们将默认文件名设置为"downloaded_file"。
```javascript
```