2014-03-19 6 views
0

정보를 파일로 내보내거나 다운로드하려고합니다. 내 브라우저에서는 괜찮 았지만, 내 phonegap 앱에 저장하면 파일을 저장할 텍스트가없는 파일로 저장 한 다음 앱으로 돌아갈 방법이 없습니다. 제안 사항이 있으십니까? 그건 그렇고, 나는 js 전문가가 아니다 - 더 초심자 같이!Phonegap - 파일 다운로드 방법

function dbError(e) { 
     console.log("SQL ERROR"); 
     console.dir(e); 
    } 

    function backup(table) { 
    var def = new $.Deferred(); 
    curatio.webdb.db.readTransaction(function(tx) { 
     tx.executeSql("select * from "+table, [], function(tx,results) { 
      var data = convertResults(results); 
      console.dir(data); 
      def.resolve(data); 
     }); 
    }, dbError); 

    return def; 
} 

$(document).on("click", "#doBackupBtn", function(e) { 
    e.preventDefault(); 
    console.log("Begin backup process"); 

    $.when(
     backup("allergies") 

    ).then(function(allergies, log) { 
     console.log("All done"); 
     var data = {allergies:allergies} 
     var serializedData = JSON.stringify((data), null, 4); 
     console.log(serializedData); 
     download("Export.csv", serializedData); 

     (function(console){ 

console.save = function(data, filename){ 

    if(!data) { 
     console.error('Console.save: No data') 
     return; 
    } 

    if(!filename) filename = 'console.json' 

    if(typeof data === "object"){ 
     data = JSON.stringify(data) 
    } 

    var blob = new Blob([data], {type: 'text/json'}), 
     e = document.createEvent('MouseEvents'), 
     a = document.createElement('a') 

    a.download = filename 
    a.href = window.URL.createObjectURL(blob) 
    a.dataset.downloadurl = ['text/json', a.download, a.href].join(':') 
    e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null) 
    a.dispatchEvent(e) 
} 
})(console) 


    }); 

}); 


    function download(filename, content) { 
    var pom = document.createElement('a'); 
    pom.setAttribute('href', 'data:text/csv;charset=utf-8,' + encodeURIComponent(content)); 
    pom.setAttribute('download', filename); 
    pom.click(); 
    } 

    //Generic utility 
function convertResults(resultset) { 
    var results = []; 
    for(var i=0,len=resultset.rows.length;i<len;i++) { 
     var row = resultset.rows.item(i); 
     var result = {}; 
     for(var key in row) { 
      result[key] = row[key]; 
     } 
     results.push(result); 
    } 
    return results; 
} 


     </script> 

답변

2

정확하게 읽으면 데이터베이스를 파일로 내보내고 가져오고 싶습니다.

blogpost에 설명되어있는 Github의 Gist에 코드를 작성했습니다. 이 코드에서는 SQL 쿼리와 속성을 변경하기 만하면됩니다. 데이터베이스를 JSON을 기반으로 파일로 내 보냅니다.

+0

감사합니다. 내가 찾고있는 것 같습니다. – user2110655

+0

반갑습니다. –

관련 문제