2010-11-29 10 views
9

Ich verstehe, dass PhoneGap-Anwendungen weitgehend (wenn nicht vollständig) HTML5 + CSS + JavaScript sind. Nativ bietet das iPhone keine Steuerelemente zum Hochladen von Dateien.Hochladen von Dateien mit PhoneGap + iPhone

Bietet PhoneGap irgendwelche Mechanismen, mit denen Benutzer Dateien hochladen können? (Bilder/Video, im Falle des iPhone)

Ich weiß Titanium ermöglicht Benutzern, dies zu tun, aber es ist ein anderes Tier mit seinen kompilierten Javascript und proprietäre APIs. Danke für deinen Rat/Input.

+0

Das iPhone jetzt tut bietet eine native Kontrolle Bilder hochladen. – user2398029

+0

Ernsthaft? '' funktioniert jetzt ab iOS 7? – jocull

+0

Ja. Auch in iOS 6. Es wird der Benutzer aufgefordert, entweder ein Bild aus der Kamerarolle auszuwählen oder ein neues Bild aufzunehmen. – user2398029

Antwort

9

Ich glaube, Sie könnten in der Lage sein, die Dateien mit der PhoneGap API zu lesen und sie mit AJAX und Post hochzuladen, wenn die Server-Anwendung es unterstützt.

Die andere Möglichkeit besteht darin, ein benutzerdefiniertes Modul/Plugin in PhoneGap zu schreiben, das speziell auf Ihre Bedürfnisse zugeschnitten ist.

Hier sind einige Example Plugins

+0

Sieht aus wie das ist so nah wie es nur geht. Irgendeine Idee, wenn das Lesen/POST-Dateien auf diese Weise den Speicher überladen wird? Nicht sicher, ob es versucht, die ganze Sache zu puffern, bevor es dazu kommt. – jocull

+0

Ich habe keine Ahnung, habe noch nicht wirklich versucht, aber Sie könnten immer ein Plugin schreiben, sie sind nicht so schwer. Ich habe einen Code zum Herunterladen geschrieben. Alle Quelle ist hier http://blog.clearlyinnovative.com/post/2056122828/phonegap-plugin-for-downloading-url-all-the-code –

+0

Interessant, ich hatte noch kein Plugin in Aktion gesehen. Danke für den Link. – jocull

-1

Sie können auf einem lokalen Laufwerk ein XMLHttpRequest in die Datei tun.
Ich bin nicht 100% sicher, ob es auf dem iPhone funktioniert, aber Webkit sollte es unterstützen.

function getImageBinaries(url) { //synchronous binary downloader for firefox2 

var req = new XMLHttpRequest(); 
req.open("GET", url, false); 

req.overrideMimeType('text/plain; charset=x-user-defined'); 

req.send(""); 
if (req.status != 200) { 
    return ""; 
} 
var t = req.responseText || "" ; 
var ff = []; 
var mx = t.length; 
var scc= String.fromCharCode; 
for (var z = 0; z < mx; z++) { 
    ff[z] = scc(t.charCodeAt(z) & 255); 
} 
var b = ff.join(""); 
return b; 
} 

Succes, Erik

+0

Würde dieser Code das Bild nicht herunterladen, anstatt es hochzuladen? – jocull

+0

Ja, aber dann haben Sie die Binärdateien. können Sie sie dann in eine Base64-Zeichenfolge codieren und diese zum Hochladen der Datei verwenden. Sie können das base64 in ein Feld einfügen, wenn Sie es veröffentlichen möchten. Vergessen Sie nicht, auf Ihrer Serverseite etwas zu ändern, um es zu entschlüsseln. Es ist besser, einen zu erstellen, da dieser nicht auf allen Geräten (einschließlich dem iPhone) unterstützt wird. Sie können diese Daten entweder posten oder einen httprequest damit machen. – Erik