2017-02-27 1 views
0

서버에서 데이터베이스 파일을 다운로드하고 apk에서 사용하고 싶습니다.dataDirectory의 데이터베이스 파일을 Cordova의 www 폴더로 복사하려면 어떻게해야합니까?

'cordova.file.dataDirectory'에서 파일을 다운로드했습니다. 파일이 원하는 위치에서 성공적으로 다운로드되었지만 window.plugins.sqlDB.copy() 함수에서 응용 프로그램이 충돌하고 메시지를 표시합니다.

불행히도 응용 프로그램이 중지되었습니다. 단지 'android_metadata'테이블

내가 사용하는 코드와 데이터베이스의 디렉토리에 생성

명명 된 파일 :

var url = encodeURI("my server path"); 
var store = cordova.file.dataDirectory; 
var fileName = "Sample"; 
window.resolveLocalFileSystemURL(store + fileName, appStart, downloadAsset); 
function downloadAsset() { 
    var fileTransfer = new FileTransfer(); 
    fileTransfer.download(url, store+fileName,function (entry) { 
      if  (navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry|IEMobile)/)) { 
       window.plugins.sqlDB.copy("Sample", 0, copysuccess, copyerror); 
      } 
      function copysuccess() { 
       //open db and run your queries 
       //app.db = window.sqlitePlugin.openDatabase({ name: "Sample" }); 
      } 

      function copyerror(e) { 
       //db already exists or problem in copying the db file. Check the Log. 
       //app.db = window.sqlitePlugin.openDatabase({ name: "Sample" }); 
      } 

      }, 

     function (err) { 
      alert(JSON.stringify(err)); 
     }); 
} 
function appStart() { 
    alert('file available'); 
} 
} 

이 도와주세요.

답변

1

Cordova 응용 프로그램의 www 디렉토리에 쓸 수 없습니다. 읽기 전용입니다.

copy methodcordova-plugin-dbcopy의 상태에 대한 문서 :

이 방법은 당신에게 복사 www 디렉토리에서 데이터베이스를 할 수 있습니다.

즉 당신이 www 디렉토리 다른 디렉토리로, 예를 들어,에서 기존 DB 를 복사 할 수 있습니다 플랫폼 별 앱 영구 저장 위치가 cordova.file.dataDirectory로 표시

+0

fileTransfer.download() 메소드를 사용하여이 문제를 해결했습니다. 성공 함수에서 app.db = window.sqlitePlugin.openDatabase ({name : "Sample"});로 코드를 변경했습니다. 대신 'window.plugins.sqlDB.copy ("Sample", 0, copysuccess, copyerror);' – Prajakta

+0

답장을 보내 주셔서 감사합니다 @DaveAlden – Prajakta

관련 문제