2010-09-02 13 views
9

Udało mi się już pomyślnie zapisać stronę internetową (x/html), ale chciałbym również zapisać obrazy i filmy MP4, które są w niej zawarte, aby uzyskać dalsze informacje. wizualizacja w trybie offline.Pobieranie obrazów i zapisywanie lokalnie na telefonie iPhone Aplikacja Phonegap

Mam dostęp do systemu plików iOS, więc zapisuję kod HTML, uzyskując kod za pomocą żądania AJAX, a następnie zapisując go w pliku.

Nie wiem jak to zrobić z wideo i zdjęć. Mam serwer, do którego mogę wysyłać zapytania z mojej aplikacji, więc pokazuje wyłącznie zawartość, którą muszę pobrać, z optymalnymi nagłówkami na wypadek, gdyby było to konieczne. Po prostu nie wiem, jak "pobrać" go od strony klienta (Javascript).

Z góry dziękuję za pomoc.

+0

Każda zmiana w tej sprawie? Co ostatecznie zdecydowałeś? – Crashalot

Odpowiedz

0

Możesz zrobić to tylko bez obawy. Robię to za pomocą wtyczki FileDownload PhoneGap, którą napisałem, używając NSURLConnection. Przekazuję adres URL, aby pobrać wtyczkę przez Javascript i lokalizację docelową (a nawet daje mi postęp pobierania).

+0

Witam, czy mógłbyś udostępnić swój kod? Byłbym gotów przekazać darowiznę, jeśli uda mi się osiągnąć to, czego szukam. – StJimmy

2

Można użyć FileTransfer obiekt pobrać obrazu zdalnego do lokalnego pliku.

Jest to najnowsza oficjalna urywek Próbka:

// !! Assumes filePath is a valid path on the device 

    var fileTransfer = new FileTransfer(); 
    var uri = encodeURI("http://some.server.com/download.php"); 

    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: { 
       "Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA==" 
      } 
     } 
    ); 
+0

czy możesz mi powiedzieć, jaka będzie "filepata", jeśli chcę zapisać obraz wewnątrz aplikacji? jak www/something/file.jpg. – AtanuCSE

+0

Co masz na myśli wewnątrz aplikacji? Musisz go zapisać na karcie SD lub w wewnętrznym katalogu pamięci. Strona jest skompilowana w zasobach aplikacji i nie można tam pisać. –

+0

Ah! ok, rozumiem. – AtanuCSE

0

Użyłem tego fragmentu na mojej iOS projektu:

window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; 
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success, fail); 

var target_directory=""; 

function fail() { 
    //alert("failed to get filesystem"); 
} 

function downloadImage(url, filename){ 
    alert("download just started."); 
    try{ 
     var ft = new FileTransfer(); 
     ft.download(
      url, 
      target_directory + filename, 
      function(entry) { 
       //alert("download complete!:" + entry.nativeURL); //path of the downloaded file 
      }, 
      function(error) { 
       //alert("download error" + error.code); 
       //alert("download error" + JSON.stringify(error)); 
      } 
     ); 
    } 
    catch (e){ 
     //alert(JSON.stringify(e)); 
    } 

} 

function success(fileSystem) { 
    target_directory = fileSystem.root.nativeURL; //root path 
    downloadImage(encodeURI("http://upload.wikimedia.org/wikipedia/commons/2/22/Turkish_Van_Cat.jpg"), "cat.jpg"); // I just used a sample url and filename 
} 
Powiązane problemy