How to write UTF-8 or Base64 data into a file (jpg/doc/pdf) on local storage(sdcard) in Phonegap

后端 未结 3 2066
渐次进展
渐次进展 2021-02-09 07:14

I am getting byte array like var byteArr=[12,-123,43,99, ...] from API, Then I am converting it into UTF-8 String by

     var utf8_str = String.fromCharCode.appl         


        
相关标签:
3条回答
  • 2021-02-09 07:38

    I have found solution to create file by byte array in Phonegap.

    In phonegap, Text and Binary data are supported for Android and iOS to write into file. So I have convert BYTE array to BINARY array, then write by FileWriter.

     var byteArr=[12,-123,43,99, ...] ;
     var UTF8_STR = new Uint8Array(byteArr);  // Convert to UTF-8...                
     var BINARY_ARR=UTF8_STR.buffer;         // Convert to buffer...    
    

    Then pass 'BINARY_ARR' to FileWriter to write in file.

     function gotFileWriter(writer) {
         writer.onwriteend = function(evt) {
         console.log("File write successfully....");        
       };
       writer.write(BINARY_ARR);   
     }
    

    Have a nice day.. :)

    0 讨论(0)
  • 2021-02-09 07:46

    try this (make sure u are getting utf8_str properly):

    var utf8_str = String.fromCharCode.apply([], new Uint8Array(byteArr));
    var base64_str= window.btoa(utf8_str);
    function writeFile() {
        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
    }
    function gotFS(fileSystem) {
        fileSystem.root.getFile(FILE_NAME, {create: true}, gotFileEntry, fail);
    }
    function gotFileEntry(fileEntry) {
        fileEntry.createWriter(gotFileWriter, fail);
    }
    function gotFileWriter(writer) {
        writer.onwrite = function (evt) {
            alert('done');
        }
        writer.write(utf8_str);
    }
    function fail(error) {
        console.log(error.code);
    }
    
    0 讨论(0)
  • I had issues on another project with btoa not doing a proper conversion, so I ended up using Base64 binary in my project to decode the Base64 response.

    What I noticed was that the file I transferred was bigger when saved on the phone compared to the file residing on the server.

    Maybe that is the case for you as well?

    0 讨论(0)
提交回复
热议问题