0

File Transfer Plugin을 사용하여 phonegap 응용 프로그램에서 파일 PDF를 다운로드하려고했지만 2 주 이상 지났습니다! 파일 전송 플러그인 의 마지막 버전을 -installing 폰갭 의 마지막 버전을 -installing 그리고 이것은 자바 스크립트 인터페이스에 통합 할 수있는 코드입니다 : 내가 그 모든 것을 할Phonegap 응용 프로그램에서 파일 전송 플러그인 사용

var fileTransfer = new FileTransfer(); 
fileTransfer.download(
    "http://developer.android.com/assets/images/home/ics-android.png", 
    "file://sdcard/ics-android.png", 
    function(entry) { 
     alert("download complete: " + entry.fullPath); 
    }, 
    function(error) { 
     alert("download error source " + error.source); 
     alert("download error target " + error.target); 
     alert("upload error code" + error.code); 
    }); 

그러나 그것은 잘못된 것 같습니다! 결과가 안드로이드 기기의 마지막 세 가지 경고음처럼 나타납니다. - 오류 소스 다운로드 - 오류 대상 다운로드 - 업로드 오류 코드 무엇을해야합니까? !!

+0

어떤 오류 코드를 작성할 수 있습니까? –

+0

응용 프로그램에 액세스하면 "download error source [http://developer.android.com/assets/images/home/ics-and-android.png]"라는 메시지가 표시되고 "download error target file : //sdcard/ics-android.png "그리고 마지막으로"upload error code ".. 많은 URL을 테스트했지만 문제가 지속됩니다. –

답변

0

file transfer plugin documentation에 따르면 우선 원격 데이터를 저장할 파일을 만들어야합니다. 코드는 다음과 같아야합니다 : 경로에 대해 내가 cordova.file.externalRootDirectory를 사용하는 것이

{ 
    //call this after onDeviceReady event 
    ... 
    var savePath = cordova.file.externalRootDirectory; 
    var fileName = "ics-android.png"; 
    var url = encodeURI("http://developer.android.com/assets/images/home/ics-android.png"); 

    downloadFile(savePath, fileName, url); 
    ... 
} 



function downloadFile(savePath, fileName, remoteURL) { 
    window.resolveLocalFileSystemURL(savePath, function (dirEntry) { 
     console.log('file system open: ' + dirEntry.name); 
     createFile(dirEntry, fileName, function (fileEntry) { 
      download(remoteURL, fileEntry); 
     }); 
    }, function (err) { alert(err) }); 
} 

function createFile(dirEntry, fileName, callback) { 
    // Creates a new file or returns the file if it already exists. 
    dirEntry.getFile(fileName, { create: true, exclusive: false }, function (fileEntry) { 
     callback(fileEntry); 
    }, function (err) { alert(err) }); 

} 
function download(remoteURL, fileEntry) { 
    var fileURL = fileEntry.toURL(); 
    var fileTransfer = new FileTransfer(); 
    fileTransfer.download(
     remoteURL, 
     fileURL, 
     function (entry) { 
      alert("download complete: " + entry.fullPath); 
     }, 
     function (error) { 
      alert("download error source " + error.source); 
      alert("download error target " + error.target); 
      alert("upload error code" + error.code); 
     }); 
} 

주, 당신이 파일을 루트 sdcard에 경로를 얻을 수 있도록.

+0

코드를 테스트했지만 다운로드 (remoteURL, fileEntry)를 호출하지 않았습니다 !! FS에 사용되는 플러그인 코드로 플러그인 파일을 설치했지만 여전히 작동하지 않습니다 !! 당신의 솔루션을 테스트 해 주실 수 있습니까? 문제는 파일 또는 그와 유사한 것들이 잘못된 구성이나 설치로 인한 것이 아닌지 확인하십시오 ... 매우 고마워요. –

+0

@HamzaBelheni 제 해결책을 고쳤습니다. 지금 시도하십시오 –

+0

우리는 우리 솔루션에 매우 가깝다고 생각하지만 파일을 표시하고 다운로드하지 않았습니다! savePath의 값을 알기 원하면 경고 (정의되지 않음)에 표시됩니다! 하지만 난 처음부터 귀하의 코드 excute, 경고 (다운로드 완료 :)하지만 모든 파일을 다운로드하지 않고 표시 ... 이후이 경고 내 응용 프로그램에 표시되지 않았다! –

1

외부 URL에서 PDF 파일을 다운로드하여 기기에 다운로드하는 샘플 Cordova 앱이 포함 된 github page을 확인해주세요.

이 샘플 앱은 iOS 및 Android 기기에서 테스트되었습니다. 희망이 도움이됩니다.

+0

당신의 솔루션은 매우 흥미 롭습니다. 나는 그것을 테스트했습니다. 그리고 finaaaally 작동합니다 : 다운로드없이 파일을 표시하고 충분합니다. 당신은 엔지니어로서 제 인생을 살 렸습니다. 많은 veeeery 감사합니다! –

+0

@Hamza Belheni 실제로 파일을 로컬로 다운로드 한 다음 표시합니다. 코드를 완전히 확인하십시오. 또한 그것은 당신을 도와 준 것을 기쁘게했습니다. – Gandhi

+0

@Ghandi 다른 작은 문제가 있습니다. 그리고 제발 당신의 도움이 필요합니다 : 어떻게 내 webview (내가 개발 한 웹 사이트)에서 이러한 함수 (응용 프로그램의 본문에 정의 된)를 호출 할 수 있습니다. 문제가 더 간단합니다. 내 webview에서 응용 프로그램 본문에 정의 된 모든 자바 함수를 어떻게 호출 할 수 있습니까? 긴급합니다. –