将base64文件解码到Ionic 3 App中的目录
Decode base64 file to directory in Ionic 3 App
我发出端点请求 returns 向我提供该文件的代码。例如,这可能是一个图像,虽然我可以显示将二进制代码直接传递给 img src,但我想将文件保存在应用程序目录中,这样用户就不必再次花费移动数据来查看图像。可以在 Ionic 3 上执行此操作吗?
Ionic 插件的工作原理:https://ionicframework.com/docs/native/base64-to-gallery
重点是,我需要一个可以下载任何类型文件的软件
前段时间,我创建了这个
var base64;
var dataTypeWithB64 = 'data:image/jpeg;base64,' + base64;
public writeFile(dataTypeWithB64: any, base64:any,) {
var fileName ="file Name";
var rootPath = "app path"
var contentType = this.getContentType(dataTypeWithB64);
// var content
var DataBlob = this.base64toBlob(base64, contentType);
// here iam mentioned this line this.file.externalRootDirectory is a native pre-defined file path storage. You can change a file path whatever pre-defined method.
var filePath = this.file.externalRootDirectory + rootPath;
console.log(filePath , " 1");
console.log(fileName , " 2");
console.log(DataBlob , " 3");
console.log(contentType , " 4");
this.file.writeFile(filePath, fileName, DataBlob, contentType).then((success) => {
console.log("File Writed Successfully", success);
}).catch((err) => {
console.log("Error Occured While Writing File", err);
})
}
//here is the method is used to get content type of an bas64 data
public getContentType(base64Data: any) {
let block = base64Data.split(";");
let contentType = block[0].split(":")[1];
return contentType;
}
//here is the method is used to convert base64 data to blob data
base64toBlob(b64Data, contentType) {
contentType = contentType || '';
let sliceSize = 512;
let byteCharacters = atob(b64Data);
let byteArrays = [];
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
let slice = byteCharacters.slice(offset, offset + sliceSize);
let byteNumbers = new Array(slice.length);
for (let i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
let blob = new Blob(byteArrays, {
type: contentType
});
// console.log(blob)
return blob;
}
我发出端点请求 returns 向我提供该文件的代码。例如,这可能是一个图像,虽然我可以显示将二进制代码直接传递给 img src,但我想将文件保存在应用程序目录中,这样用户就不必再次花费移动数据来查看图像。可以在 Ionic 3 上执行此操作吗?
Ionic 插件的工作原理:https://ionicframework.com/docs/native/base64-to-gallery
重点是,我需要一个可以下载任何类型文件的软件
前段时间,我创建了这个
var base64;
var dataTypeWithB64 = 'data:image/jpeg;base64,' + base64;
public writeFile(dataTypeWithB64: any, base64:any,) {
var fileName ="file Name";
var rootPath = "app path"
var contentType = this.getContentType(dataTypeWithB64);
// var content
var DataBlob = this.base64toBlob(base64, contentType);
// here iam mentioned this line this.file.externalRootDirectory is a native pre-defined file path storage. You can change a file path whatever pre-defined method.
var filePath = this.file.externalRootDirectory + rootPath;
console.log(filePath , " 1");
console.log(fileName , " 2");
console.log(DataBlob , " 3");
console.log(contentType , " 4");
this.file.writeFile(filePath, fileName, DataBlob, contentType).then((success) => {
console.log("File Writed Successfully", success);
}).catch((err) => {
console.log("Error Occured While Writing File", err);
})
}
//here is the method is used to get content type of an bas64 data
public getContentType(base64Data: any) {
let block = base64Data.split(";");
let contentType = block[0].split(":")[1];
return contentType;
}
//here is the method is used to convert base64 data to blob data
base64toBlob(b64Data, contentType) {
contentType = contentType || '';
let sliceSize = 512;
let byteCharacters = atob(b64Data);
let byteArrays = [];
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
let slice = byteCharacters.slice(offset, offset + sliceSize);
let byteNumbers = new Array(slice.length);
for (let i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
let blob = new Blob(byteArrays, {
type: contentType
});
// console.log(blob)
return blob;
}