2011-11-30 2 views
13

foo.html 파일이 내 자산/www 디렉토리 (내 index.html 옆)에 앉아 있습니다 (상당히 편합니다).assets/www 디렉토리의 액세스 파일

해당 파일을 기기의 다른 위치에 복사하고 싶습니다. 내 첫 번째 접근 window.resolveLocalFileSystemURI("foo.html", cool(), notCool());이 작동하지 않습니다. 또한 www와 같은 접두어/그것은 안됩니다.

실제로 Phonegap을 통해 파일에 액세스 할 수 있는지 여부는 흥미로운 일입니다. 나는 확신 할 수 없으므로 가능한 경우 assets 디렉토리의 파일에 대해 FileEntry를 얻는 방법을 코드 스 니펫으로보고 싶습니다.

편집 : 좋아 지금 우리가이

window.resolveLocalFileSystemURI("file:///android_asset", 
    function(entry){ 
    console.log(entry.fullPath);}, 
    function(evt){ 
    console.log(evt.code);} 
); 

처럼 전화를 가지고 있지만, 우리가 code: undefined (폰갭 1.2) 및 V1.0와 code: 1 (코드 1 = 파일 오류가 발생했습니다)! 찾을 수 없습니다

답변

10

당신은 이런 식으로 파일에 액세스 할 수 있어야합니다 :

window.resolveLocalFileSystemURI("file:///android_asset/www/foo.html", onResolveSuccess, onFail); 

당신은 다음 File API 사용할 수 있습니다 - FileEntr을 실제로 작업을 수행하려면 y.copyTo 또는 FileEntry.moveTo를 사용하십시오. 참고 - assset/www 폴더에는 실제로 SD 카드에만 쓸 수 없습니다.

희망이

+1

은 그렇게 좋은 보이지만 제대로 동작하지 않습니다 : C는 항상 실패 메소드를 호출합니다. Script.js 파일 대신 내 더미 HTML에 액세스하려고 할 때도 마찬가지입니다. 또한 디렉토리를 두 ​​번 확인했습니다. 오류 이벤트에는 코드 : 정의되지 않은 1 개의 필드 만 있습니다. – yoshi

+1

logcat 출력의 내용은 무엇입니까? – Leon

+0

오류 이벤트를 로깅하면 하나의 필드 만 나타납니다 : 'code : undefined' – yoshi

1

레온을하는 데 도움이 - 첫 번째 부분은 사실 "당신이 실제로 만 SD 카드의 assset/www가 폴더에 쓸 수 없습니다", 당신은 자산/www가 경로에 쓸 수 없습니다. 그러나 앱이 기기에 설치되어있는 경우 파일을 만들고 쓸 수 있으며 Android의 루트에서 만들어집니다. 앱이 SD 카드에 설치되어있는 경우 SD 카드의 루트에 해당 파일이 생성됩니다. 이렇게 생성 된 파일은 앱의 사용자 데이터를 지울 때 삭제되거나 변경되지 않으며 앱이 삭제 될 때 삭제되지 않습니다.

14

원하는 작업을 수행 할 수 없습니다. assets 디렉토리의 파일은 기술적으로 파일 시스템에 있지 않으므로 File API를 통해 액세스 할 수 없습니다. 즉, window.resolveLocalFileSystemURI()을 호출해도 FileEntry가 반환되지 않습니다.

XHR을 통해 해당 파일에 액세스하는 것이 가장 좋습니다. 텍스트 기반 인 경우 XHR의 결과를 가져 와서 FileWriter를 사용하여 파일 시스템에 쓸 수 있습니다. XHR을 사용하여 assets 디렉토리에서 파일을 얻는 방법을 보여주는 블로그 게시물을 작성했습니다.

http://simonmacdonald.blogspot.com/2011/12/on-fourth-day-of-phonegapping-creating.html

+0

나는이 순간에 코드를 가지고 있지 않지만 나는 받아 들여진 대답으로해야 할 것을 꽤 많이 성취했다. "만나기"Simon, 나는 전화 그룹에서 많은 게시물을 읽었습니다. :) – yoshi

+0

@yoshi, 죄송 합니다만, Leon의 답변을 사용하여 자산 파일에 액세스 할 수 있었습니까? 아니면 그들에게로가는 길이 있습니까? 나는 그것을 작동 시키려고 노력했지만 나는 할 수 없었다! – lao

+0

lucaskoala - 작동시킬 수 있었습니까? 나는 행운이 없다. (그리고 사이몬은 정확하지 않다고 생각한다.) 여기를 참조하십시오 : http://stackoverflow.com/questions/22948430 –