uniapp 将base64保存到手机
时间: 2023-08-16 13:05:06 浏览: 92
您可以使用uniapp的uni.downloadFile() API下载base64编码的文件,然后使用uni.saveFile() API将文件保存到手机。下面是一个简单的示例代码:
```javascript
// 将base64编码的文件保存到手机
function saveBase64File(base64Data) {
// 将base64数据转换为Blob对象
const blob = base64ToBlob(base64Data);
// 下载Blob对象为临时文件
uni.downloadFile({
url: URL.createObjectURL(blob),
success: (res) => {
if (res.statusCode === 200) {
// 保存文件到手机
uni.saveFile({
tempFilePath: res.tempFilePath,
success: (res) => {
console.log('File saved:', res.savedFilePath);
},
fail: (err) => {
console.error('Failed to save file:', err);
}
});
} else {
console.error('Failed to download file:', res);
}
},
fail: (err) => {
console.error('Failed to download file:', err);
}
});
}
// 将base64数据转换为Blob对象
function base64ToBlob(base64Data) {
const parts = base64Data.split(';base64,');
const contentType = parts[0].split(':')[1];
const byteCharacters = atob(parts[1]);
const byteArrays = [];
for (let i = 0; i < byteCharacters.length; i++) {
byteArrays.push(byteCharacters.charCodeAt(i));
}
return new Blob([new Uint8Array(byteArrays)], {type: contentType});
}
```
在上面的代码中,我们首先将base64编码的数据转换为Blob对象,然后使用uni.downloadFile() API下载临时文件,并使用uni.saveFile() API将文件保存到手机。请注意,我们将Blob对象的URL作为下载链接传递给uni.downloadFile() API。这是因为uniapp不支持直接下载Blob对象,但我们可以将Blob对象的URL作为下载链接传递给API。
阅读全文