uniapp寫入位元組流檔案bytes
阿新 • • 發佈:2020-08-19
1.
//檔案的寫入操作傳入要寫入檔名,base64 function lzFileWriter(base64,fileName) { return new Promise((result,reject)=>{ // PRIVATE_WWW:本地檔案系統常量,Number型別,固定值1。應用執行資源目錄,僅本應用可訪問。 為了確保應用資源的安全性,此目錄只可讀。 // PRIVATE_DOC 本地檔案系統常量,Number型別,固定值2。應用私有文件目錄,僅本應用可讀寫。 plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) { /* fs.root是根目錄操作物件DirectoryEntry getFile(path,flag,succesCB,errorCB)建立或開啟檔案 path: ( DOMString ) 必選 要操作檔案相對於當前目錄的地址 flag: ( Flags ) 可選 要操作檔案或目錄的引數 create: (Boolean 型別 )是否建立物件標記 指示如果檔案或目錄不存在時是否進行建立,預設值為false succesCB: ( EntrySuccessCallback ) 可選 建立或開啟檔案成功的回撥函式 errorCB: ( FileErrorCallback ) 可選 建立或開啟檔案失敗的回撥函式 */ // 建立或開啟檔案 fs.root.getFile(fileName,{create:true},function(fileEntry) { // 獲得平臺絕對路徑 var fullPath = fileEntry.fullPath; console.log('平臺絕對路徑',fullPath); // 引入安卓原生類 var Base64 = plus.android.importClass("android.util.Base64"); var FileOutputStream = plus.android.importClass("java.io.FileOutputStream"); //如果檔案不存在則建立檔案,如果檔案存在則刪除檔案後重新建立檔案 var out = new FileOutputStream(fullPath); /** * 此處需要把base64字首去除,在寫入位元組流陣列 * 去除頭部data:image/jpg;base64,留下base64編碼後的字串 **/ let index=base64.indexOf(',') let base64Str=base64.slice(index+1,base64.length) console.log(base64Str.slice(0,55)); //base64解密得到位元組流bytes; var bytes = Base64.decode(base64Str,0); try{ console.log(bytes); out.write(bytes); // byte 陣列寫入此檔案輸出流中。 out.flush(); //重新整理寫入檔案中去。 out.close(); //關閉此檔案輸出流並釋放與此流有關的所有系統資源。 result(fullPath) }catch(e){ console.log(e.message); reject(e.message) } // 下面的方法只能寫入字串,無法寫入位元組流bytes // fileEntry檔案系統中的檔案物件,用於管理特定的本地檔案 // fileEntry.file(function(file) { // /*createWriter獲取檔案關聯的寫檔案操作物件FileWriter // abort: 終止檔案寫入操作 // seek: 定位檔案操作位置 // truncate: 按照指定長度截斷檔案 // write: 向檔案中寫入資料 // */ // fileEntry.createWriter(function(FileWriter) { // FileWriter.write(base64); // FileWriter.onwriteend=function(res){ // console.log(res.target.fileName); // result(res.target.fileName) // } // FileWriter.onerror=function(error){ // console.log(error); // reject(error) // } // }, function(e) { // console.log(e); // }); // }); }); }); }) }