2010-11-29 18 views
9

Entiendo que las aplicaciones PhoneGap son en gran parte (si no del todo) HTML5 + CSS + JavaScript. Nativamente, el iPhone no proporciona controles para cargar archivos.Cargando archivos con PhoneGap + iPhone

¿PhoneGap proporciona algún mecanismo que permita a los usuarios cargar archivos? (imágenes/video, en el caso del iPhone)

Sé que Titanium permite a los usuarios hacer esto, pero es un animal diferente con su JavaScript compilado y API propietarias. Gracias por su consejo/aporte.

+0

El iPhone hace ahora proporciona un control nativo para subir imágenes. – user2398029

+0

En serio? '' funcionará ahora a partir de iOS 7? – jocull

+0

Sí. Incluso en iOS 6. Le pedirá al usuario que elija una imagen de Camera Roll o que tome una nueva foto. – user2398029

Respuesta

9

Creo que es posible que pueda leer los archivos usando el PhoneGap API y subirlos usando y la publicación AJAX si la aplicación del servidor lo admite.

La otra opción es escribir un módulo/complemento personalizado en PhoneGap que pueda ser específico para sus necesidades.

Éstos son algunos Example Plugins

+0

Parece que es lo más parecido posible. ¿Alguna idea de si leer/POSTAR archivos de esta manera sobrecargará la memoria? No estoy seguro si trata de amortiguar todo antes de que funcione. – jocull

+0

no tengo idea, no lo he intentado antes, pero siempre puedes escribir un plugin, no son tan difíciles. He escrito uno para descargar el código. Toda la fuente se publica aquí http://blog.clearlyinnovative.com/post/2056122828/phonegap-plugin-for-downloading-url-all-the-code –

+0

Interesante, todavía no había visto un complemento en acción. Gracias por el enlace. – jocull

-1

Usted puede hacer una xmlhttprequest al archivo en una unidad local.
No estoy 100% seguro de si funcionará en el iPhone, pero webkit debería ser compatible.

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

¿Este código no descargaría la imagen en lugar de cargarla? – jocull

+0

Sí, pero luego tienes los binarios. puede codificarlos en una cadena base64 y usarlos para cargar el archivo. Puede poner la base64 en un campo si desea publicarlo. Simplemente no olvide hacer un pequeño cambio en su lado del servidor para decodificarlo. Es mejor hacer un ya que no es compatible con todos los dispositivos (incluido el iPhone). puede publicar esta información, o hacer una httprequest con ella. – Erik