uniapp 写入 bytes

  1. //文件的写入操作传入要写入文件名,base64  
  2. function bytesWriter(base64,fileName) {  
  3.     return new Promise((result,reject)=>{  
  4.         // PRIVATE_WWW:本地文件系统常量,Number类型,固定值1。应用运行资源目录,仅本应用可访问。 为了确保应用资源的安全性,此目录只可读。  
  5.         // PRIVATE_DOC 本地文件系统常量,Number类型,固定值2。应用私有文档目录,仅本应用可读写。  
  6.         plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {  
  7.             /* 
  8.             fs.root是根目录操作对象DirectoryEntry 
  9.             getFile(path,flag,succesCB,errorCB)创建或打开文件 
  10.                 path: ( DOMString ) 必选 要操作文件相对于当前目录的地址 
  11.                 flag: ( Flags ) 可选 要操作文件或目录的参数 create: (Boolean 类型 )是否创建对象标记 指示如果文件或目录不存在时是否进行创建,默认值为false 
  12.                 succesCB: ( EntrySuccessCallback ) 可选 创建或打开文件成功的回调函数 
  13.                 errorCB: ( FileErrorCallback ) 可选 创建或打开文件失败的回调函数 
  14.             */   
  15.            // 创建或打开文件  
  16.             fs.root.getFile(fileName,{create:true},function(fileEntry) {  
  17.                 // 获得平台绝对路径      
  18.                 var fullPath = fileEntry.fullPath;    
  19.                 console.log(‘平台绝对路径’,fullPath);  
  20.                 // 引入安卓原生类  
  21.                 var Base64 = plus.android.importClass(“android.util.Base64”);  
  22.                 var FileOutputStream = plus.android.importClass(“java.io.FileOutputStream”);  
  23.                 //如果文件不存在则创建文件,如果文件存在则删除文件后重新创建文件  
  24.                 var out = new FileOutputStream(fullPath);   
  25.                 /** 
  26.                  * 此处需要把base64前缀去除,在写入字节流数组 
  27.                  * 去除头部data:image/jpg;base64,留下base64编码后的字符串 
  28.                 **/  
  29.                 let index=base64.indexOf(‘,’)  
  30.                 let base64Str=base64.slice(index+1,base64.length)  
  31.                 console.log(base64Str.slice(0,55));  
  32.                 //base64解密得到字节流bytes;     
  33.                 var bytes = Base64.decode(base64Str,0);  
  34.                 try{    
  35.                     console.log(bytes);  
  36.                     out.write(bytes); // byte 数组写入此文件输出流中。  
  37.                     out.flush(); //刷新写入文件中去。  
  38.                     out.close(); //关闭此文件输出流并释放与此流有关的所有系统资源。  
  39.                     result(fullPath)  
  40.                 }catch(e){    
  41.                     console.log(e.message);    
  42.                     reject(e.message)  
  43.                 }  
  44.                 // 下面的方法只能写入字符串,无法写入字节流bytes  
  45.                 // fileEntry文件系统中的文件对象,用于管理特定的本地文件  
  46.                 // fileEntry.file(function(file) {  
  47.                 //  /*createWriter获取文件关联的写文件操作对象FileWriter  
  48.                 //      abort: 终止文件写入操作  
  49.                 //      seek: 定位文件操作位置  
  50.                 //      truncate: 按照指定长度截断文件  
  51.                 //      write: 向文件中写入数据  
  52.                 //  */  
  53.                 //  fileEntry.createWriter(function(FileWriter) {  
  54.                 //      FileWriter.write(base64);  
  55.                 //      FileWriter.onwriteend=function(res){  
  56.                 //          console.log(res.target.fileName);  
  57.                 //          result(res.target.fileName)  
  58.                 //      }  
  59.                 //      FileWriter.onerror=function(error){  
  60.                 //          console.log(error);  
  61.                 //          reject(error)  
  62.                 //      }  
  63.                 //  }, function(e) {  
  64.                 //      console.log(e);  
  65.                 //  });  
  66.                 // });  
  67.             });  
  68.         });  
  69.     })  
  70. }  

本文链接地址: uniapp 写入 bytes