Phonegap android impossible de charger l'image à l'aide de transfert de fichiers
Je suis en train de capturer une image à l'aide de l'appareil photo et la télécharger sur mon AJAX point de terminaison. J'ai confirmé le que de ce point de terminaison peut accepter le fichier (j'ai créé un test HTML le fichier sur mon bureau qui envoie un formulaire avec une image). Je suis l'aide de Cordova (phonegap) 1.7.0, et essaie d'obtenir le transfert de fichiers() fonctionne. Voici le lien pour la documentation que j'ai suivi:
http://docs.phonegap.com/en/1.0.0/phonegap_file_file.md.html#FileTransfer
Le succès de rappel déclenche, mais pas de $_FILES de données se trouve sur l'ordinateur d'extrémité.
J'ai ensuite trouvé cet article:
http://zacvineyard.com/blog/2011/03/25/upload-a-file-to-a-remote-server-with-phonegap/
Qui a suggéré d'utiliser options.chunkedMode = false
. Maintenant, le téléchargement prend du temps et demi, avant de finalement échoué avec le code d'erreur est de 3, ce qui je crois est FileError.ABORT_ERR
.
Suis-je raté quelque chose?
Mon code à partir de l'application ci-dessous:
navigator.camera.getPicture(function(imageURI){
console.log('take success! uploading...');
console.log(imageURI);
var options = new FileUploadOptions();
options.fileKey = 'file';
options.fileName = 'spot_image.jpeg';
options.mimeType = 'image/jpeg';
var params = new Object();
params.spot_id = 1788;
params.param2 = 'something else';
options.params = params;
options.chunkedMode = false;
var ft = new FileTransfer();
ft.upload(imageURI,serverURL + '/ajax.php?fname=appuploadspotimage',function(r){
console.log('upload success!');
console.log(r.responseCode);
console.log(r.response);
console.log(r.bytesSent);
},function(error){
console.log('upload error')
console.log(error.code);
},options,true);
console.log('after upload');
},function(message){
console.log('fail!');
console.log(message);
},{
quality: 50,
destinationType: navigator.camera.DestinationType.DATA_URL,
sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY
});
serverURL
est défini comme le domaine pour mon AJAX point de terminaison, qui a été dans la liste blanche dans cordova.xml.
J'ai vu un certain nombre de questions ici, dans ce sujet, ce qui les divergences d'opinions quant à savoir si chunkedMode doit être utilisé. Toute personne ayant ce problème?
Suis en train d'essayer cela sur un Samsung Galaxy S sous ICS.
Peut que la personne qui m'aide à résoudre ce problème mystérieusement hériter d'une bière à l'usine.
- Pourriez-vous vérifier dans votre serveur ce post params est-il recevoir? J'ai eu un problème similaire, et a finalement découvert que ce qui se passait était que je n'étais pas à l'envoi de l'objet options correctement
- Entendez-vous la vérification de la
$_POST
variable dans le serveur? J'ai essayé et j'obtiens un tableau vide. J'ai essayé d'utiliser$_REQUEST
ainsi, juste pour vérifier, et seul lefname
paramètre que j'ai fourni dans l'url est là.$_FILES
tourne un tableau vide.
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser imageUri que vous obtenez à partir de la caméra succès de rappel dans le transfert de fichiers méthode de téléchargement, vous devez d'abord résoudre uri comme un nom de fichier comme ceci:
resolveLocalFileSystemURL
(au lieu de URI)? Et/ou, les choses ont-elles changé?fileEntry.toURL()
au lieu defileObj.fullPath
. Notez également queresolveLocalFileSystemURI
est obsolète et vous devriez être en utilisantresolveLocalFileSystemURL
Après déroutant un peu, il me semble que vous pouvez utiliser l'uri de l'image directement....
voir ma réponse ici: (cela fonctionne pour moi sur android):
android, phonegap appareil photo et de l'image téléchargement