前端下载xml,下载base64图片
时间: 2024-10-09 19:02:46 浏览: 11
前端下载XML文件通常使用浏览器内置的`fetch()`、`axios`等库的`response.blob()`或`response.arrayBuffer()`方法先获取到数据,然后创建一个`a`标签模拟点击事件来触发下载。示例代码如下:
```javascript
async function downloadXml(xmlData) {
const blob = new Blob([xmlData], { type: "text/xml;charset=utf-8" });
const url = URL.createObjectURL(blob);
const aLink = document.createElement("a");
aLink.href = url;
aLink.download = "data.xml";
aLink.click();
// 清理blob引用,防止内存泄漏
setTimeout(() => URL.revokeObjectURL(url), 0);
}
// 使用示例
const xmlString = "<your_xml_data>";
downloadXml(xmlString);
```
下载Base64编码的图片则是将Base64字符串转换为Blob对象,再通过类似的方式来下载。首先需要解码Base64:
```javascript
function dataUrlToBlob(dataUrl) {
// 解码Base64
var arr = dataUrl.split(','), mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], {type:mime});
}
function downloadImage(base64Image, filename) {
const blob = dataUrlToBlob(base64Image);
// 同上,创建下载链接并触发下载
// ...
}
// 使用示例
const base64Image = "data:image/jpeg;base64,your_base64_string";
downloadImage(base64Image, "image.jpg");
```