将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; 
}