2016-06-14 3 views
1

iOS 플랫폼 용 PhoneGap 기반 응용 프로그램을 구축 중입니다.
특정 이미지 파일을 특정 디렉토리에 다운로드하고 싶습니다.PhoneGap 특정 폴더에 이미지 다운로드

var url = 'http://myServer.com/img.jpg'; 
var filePath = 'www/my_img/'; 
var fileTransfer = new FileTransfer(); 
var uri = encodeURI(url); 

fileTransfer.download(
    uri, 
    filePath, 
    function(entry) { 
     console.log("download complete: " + entry.fullPath); 
    }, 
    function(error) { 
     console.log("download error source " + error.source); 
     console.log("download error target " + error.target); 
     console.log("upload error code" + error.code); 
    }, 
    false, 
    { 
     headers: { 
     } 
    } 
); 
: 다운로드 이미지

<img src="my_img/downloaded.jpg" width="100px" height="100px"> 

내가 폰갭 플러그인을 사용하고 있습니다 :

나는 www/my_img/

은 그래서 내 응용 프로그램에서 나는 더이 이미지를 사용하여 폴더에 다운로드 된 이미지를 저장할

하지만 지정한 폴더에 이미지가 저장되지 않는 문제가 있습니다.
어떻게 다운로드 한 이미지를 "www/my_img /"폴더에 저장할 수 있습니까?

답변

1

문제는 filePath의 값이다 :3210는 파일 경로 var에 관해서는, 나는이 하나 (각 파일에 대해 하나)을 사용합니다. 이것은 장치 - 절대 - 파일 - 경로 또는 파일 시스템 URL이어야합니다.

comptibility notes part of the docs에서보세요 :

당신이 사용할 수있는 몇 가지 사전 정의 된 폴더가 있습니다.

cordova.file.dataDirectory 

당신이 다운로드 한 이미지를 저장하고, 완료되면, 이미지 SRC를 설정할 수 있습니다 : I는 (모든 권한을 설정하고 지속적 할 필요없이 그것의 R/W) 귀하의 경우에 가장 적합한 생각 . 귀하의 경우에이 번역

: 나는 파일 시스템에 접근 할 방법 재생을위한

HTML

<img id="downloadedimage" width="100px" height="100px"> 

JS는

var url = 'http://myServer.com/img.jpg'; 
var filePath = cordova.file.dataDirectory + '/img.png'; 
var fileTransfer = new FileTransfer(); 
var uri = encodeURI(url); 

fileTransfer.download(
    uri, 
    filePath, 
    function(entry) { 
     console.log("download complete: " + entry.fullPath); 
     document.getElementById("downloadedimage").src = entry.toURL(); 
    }, 
    function(error) { 
     console.log("download error source " + error.source); 
     console.log("download error target " + error.target); 
     console.log("upload error code" + error.code); 
    }, 
    false, 
    { 
     headers: { 
     } 
    } 
); 
+0

그래서 iOS에서'cordova.file.applicationStorageDirectory' +'Documents'가 나에게 줄 것입니다 폴더에있는 파일을 읽고 쓸 수 있습니다. 또한 "cordova.file.dataDirectory"도 동일하게 적용됩니까? 이 변수는 직접 액세스 할 수 있습니까? 아니면 @ Zappescu가 답변에 언급 한 경로를 얻기 위해 코드를 작성해야합니까? 어느 것이 더 믿을만한가? – User7723337

+0

예를 들어 답변을 업데이트했습니다. 희망이 도움이됩니다. –

+0

감사합니다. 저장하고 싶은 폴더가 존재하지 않는다면 생성 될 것인가? 또는 먼저'cordova.file.dataDirectory'에 새 폴더를 만들어서 저장해야합니까? – User7723337

1

필자는 파일 시스템에 액세스해야한다고 생각합니다. 확인을 클릭하면 액세스 권한이있는 디렉토리에서 만든 폴더의 이미지를 다운로드 할 수 있습니다. 필요한 경우, 나는 당신에게 발췌 문장을 줄 수 있습니다.

편집 :

파일 시스템 1) 액세스 :

function onDeviceReady() { 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFSCategory, fail); 
} 

2) 파일 시스템의이 주요 디렉토리 얻을 수있어 경우 : 주요 디렉토리가 준비되면)

function gotFSCategory(fileSystem) { 
    window.fileSystem = fileSystem; 
    fileSystem.root.getDirectory(window.appRootDirName, { 
     create : true, 
     exclusive : false 
    }, dirReadyCategory, fail); 
} 

3, 저장 그것 및 계속하십시오 :

var filePath = window.appRootDir.toURL() + fileName; 
+0

감사합니다. 제 경우에는 이미지를 저장할 디렉토리가 www 폴더에 존재할 것입니다. 그냥 그 디렉토리에 대한 경로를 설정해야합니까? 스 니펫이 많이 도움이 될 것입니다. – User7723337

+0

코드 스 니펫 (snippet)을 가져 주셔서 감사합니다.하지만 경로를 얻기 위해이 메소드 호출 과정을 거쳐야하거나'cordova.file '을 사용할 수 있습니까?그의 답변에서 @Philip Bijker가 언급 한 것처럼 "applicationStorageDirectory' 변수가 필요합니까? – User7723337

+0

필자는 @Philip 제안을 전에 사용하지 않았고, 알려진 문제없이 Android/iOS/Win 응용 프로그램에서 내 코드를 사용한다고 말할 수 있습니다. – Zappescu

관련 문제