2017-03-07 1 views
1

텍스트 파일을 열고 sqlite db에 내용을 넣으려고합니다. 문제는 어떤 식 으로든 파일을 읽을 수 없다는 것입니다. 아래는 내가 성취 한 성공에 가장 가깝습니다. 실행될 때 FileError (2)를 생성합니다 : "SECURITY_ERR".ionic2 및 android 5에서 sdCard의 텍스트 파일을 읽는 방법은 무엇입니까?

전화에
openFile(): void { 
    FileChooser.open() 
    .then(uri => { 
     console.log(uri); 
     File.resolveLocalFilesystemUrl(uri) 
     .then(entry=>{ 
     console.log(entry); 
     let path = entry.nativeURL.substring(0, entry.nativeURL.lastIndexOf('/')); 
     console.log(path); 
     File.readAsText(path, entry.name) 
     .then(content=>{ 
      console.log(content); 
     }) 
     }) 
     .catch(e => console.log(e)); 
    }); 
    } 

I 앱이 SD 카드에 RW에 액세스 할 수 있는지 확인하고 platform/AndroidManifest.xml에 내가 설정 한 : 나는 서로 다른 솔루션을 인터넷을 통해 파고하려고 많은 시간을 보냈다

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

성공하지 못했습니다.

편집 :

여기

이 무엇인지 console.log(cordova.file); 출력 :

applicationDirectory: "file:///android_asset/" 
applicationStorageDirectory: "file:///data/data/com.ionicframework.leki645195/" 
cacheDirectory: "file:///data/data/com.ionicframework.leki645195/cache/" 
dataDirectory: "file:///data/data/com.ionicframework.leki645195/files/" 
documentsDirectory: null 
externalApplicationStorageDirectory: "file:///storage/emulated/0/Android/data/com.ionicframework.leki645195/" 
externalCacheDirectory: "file:///storage/emulated/0/Android/data/com.ionicframework.leki645195/cache/" 
externalDataDirectory: "file:///storage/emulated/0/Android/data/com.ionicframework.leki645195/files/" 
externalRootDirectory: "file:///storage/emulated/0/" 
sharedDirectory: null 
syncedDataDirectory: null 
tempDirectory: null 

답변

0

이 코드를 시도

openFile() { 
    this.fileChooser.open() 
    .then(uri => { 

    this.file.resolveLocalFilesystemUrl(uri) 
    .then(entry=>{ 

     let path = entry.nativeURL; 

     //read file contents 
     var rawFile = new XMLHttpRequest(); 
     rawFile.open("GET", path, false); 
     rawFile.onreadystatechange = function() 
     { 
      if(rawFile.readyState === 4) 
      { 
       if(rawFile.status === 200 || rawFile.status == 0) 
       { 
       var fileText = rawFile.responseText; 
       alert(fileText); 
       } 
      } 
     } 
     rawFile.send(null); 

    }) 
    .catch(e => console.log(e)); 
    }); 
} 
관련 문제