2010-11-29 5 views
9

Je comprends que les applications PhoneGap sont en grande partie (si ce n'est entièrement) HTML5 + CSS + JavaScript. Nativement, l'iPhone ne fournit pas de contrôles pour télécharger des fichiers.Téléchargement de fichiers avec PhoneGap + iPhone

Est-ce que PhoneGap fournit des mécanismes permettant aux utilisateurs de télécharger des fichiers? (images/vidéo, dans le cas de l'iPhone)

Je sais que Titanium permet aux utilisateurs de faire cela, mais c'est un animal différent avec son Javascript compilé et ses API propriétaires. Merci pour vos conseils/contributions.

+0

L'iPhone fait maintenant fournit un contrôle natif pour télécharger des images. – user2398029

+0

Sérieusement? '' fonctionnera maintenant à partir de iOS 7? – jocull

+0

Ouais. Même dans iOS 6. Il va demander à l'utilisateur soit de choisir une image de la pellicule ou de prendre une nouvelle photo. – user2398029

Répondre

9

Je crois que vous pourriez être en mesure de lire les fichiers en utilisant le PhoneGap API et les télécharger en utilisant et AJAX après si l'application serveur le supportait.

L'autre option consiste à écrire un module/module personnalisé dans PhoneGap qui pourrait répondre à vos besoins.

Voici quelques Example Plugins

+0

On dirait que c'est à peu près aussi proche que possible. Toute idée si lire/postant des fichiers de cette manière va surcharger la mémoire? Je ne sais pas si elle essaye d'amortir le tout avant qu'il ne le fasse. – jocull

+0

Je n'ai aucune idée, je n'ai pas vraiment essayé avant, mais vous pouvez toujours écrire un plugin, ils ne sont pas si difficile. J'ai écrit un pour télécharger le code. Toute la source est postée ici http://blog.clearlyinnovative.com/post/2056122828/phonegap-plugin-for-downloading-url-all-the-code –

+0

Intéressant, je n'avais pas encore vu de plugin en action. Merci pour le lien. – jocull

-1

Vous pouvez faire une XMLHttpRequest pour le fichier sur un disque local.
Je ne suis pas sûr à 100% si cela fonctionnera sur l'iPhone, mais webkit devrait le supporter.

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

Ce code ne téléchargerait-il pas l'image plutôt que de la télécharger? – jocull

+0

Oui, mais vous avez les binaires. vous pouvez ensuite les encoder dans une chaîne base64 et l'utiliser pour télécharger le fichier. Vous pouvez mettre le base64 dans un champ si vous voulez le poster. N'oubliez pas de faire un petit changement dans votre serveur pour le décoder. Il vaut mieux alors faire un car ce n'est pas supporté sur tous les appareils (y compris l'iPhone). vous pouvez soit publier ces données, ou faire une requête http avec elle. – Erik

Questions connexes