Android Envoi multiple photos vers serveur

- - Dernière réponse :  iKelSilver - 4 févr. 2019 à 17:50
Bonjour,

Je suis sur un projet Androi qui me demande de permettre à l'utilisateur de pouvoir sélectionner plusieurs photos à la fois et de les envoyer en un seul lot vers un serveur de préférence MySQL avec php.
J'arrive à l'envoi d'une seule photo vers le serveur, mais, je sais procéder pour faire l'envoi multiple de photos vers mon serveur avec quelques variables.
Est-ce que vous pouvez me proposer des liens ou des pistes pour y arriver ?

J'ai déjà bien parcouru Google, mais, sans satisfaction.

Merci
Afficher la suite 

1 réponse

Messages postés
5340
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
3 septembre 2019
87
0
Merci
Salut,

Si tu utilises les requêtes POST (HTTP) pour envoyer tes images, inspire toi de ce qui est fait ICI, sinon merci de préciser.

Twinuts
Messages postés
5340
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
3 septembre 2019
87 -
Salut,

Bah après l'initialisation de $InsertSQL, il suffit de faire:
...
$InsertSQL = "insert into photo_print(id_photo_print,image_photo_print,id_android,tel_photo_print,nom_prenom_photo_print,moment_photo_print)values('$id_photo','$photo','$identif_android','$tel_client','$nom_client','$moment_photo')";
$conn->query($InsertSQL);
...
// sans oublier de faire un close avant de quitter ta page
$conn->close();
echo json_encode($response);


Par contre en regardant la doc on trouve l'info suivante:
Si vous passez une requête à mysqli_query() qui est plus longue que max_allowed_packet, les codes d'erreur en retour seront différents selon si vous utilisez MySQL Native Driver (mysqlnd) ou la MySQL Client Library (libmysqlclient). Le comportement est défini comme suit:
mysqlnd sur Linux retourne un code d'erreur de 1153. Le message d'erreur sera got a packet bigger than max_allowed_packet bytes.
mysqlnd sur Windows retourne un code d'erreur de 2006. Le message sera du type server has gone away.
libmysqlclient sur toute plateforme retourne le code d'erreur 2006. Le message sera du type server has gone away.


Comme tu passes une image dans ta base, ici, il y a de grandes chances que la requête foire et donc que query ne soit pas le plus adapté.
N'étant pas un dev php je ne peux pas t'aider sur une autre solution possible, par contre tu dois pouvoir trouver ton bonheur ICI
Bonsoir Twinuts,

Ça marche bien maintenant sauf que, ma base de données reçoit seulement un seul enregistrement même si l'utilisateur envoie plus d'une photo.
Normalement, s'il envoie par exemple 5 photos, je dois avoir normalement 5 enregistrement portant le nom de chaque photo reçue.
Je sais que je dois boucler cela avec
for 
ou autres mais, aucune idée sur quel endroit le placé.
Avez-vous une idée sur ça ?

Merci
Twinuts
Messages postés
5340
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
3 septembre 2019
87 -
Salut,

Dans le code php que tu as donnée plus haut, l'insertion dans la base de donnée n'est pas dans la boucle for, donc, c'est assez logique que tu n'ais qu'une seule image dans ta base de données...
Bonsoir Twinuts,

Je l'ai fait comme cela aussi, mais, le problème persiste toujours.
Merci
Twinuts, vraiment, un grand merci de m'avoir conduit jusqu'à trouver une solution à mon problème.
Voici ce que j'ai fait et ça a marché :

foreach($imageList as $image) {
$InsertSQL = "insert into photo_print(id_photo_print,image_photo_print,id_android,tel_photo_print,nom_prenom_photo_print,moment_photo_print)values('$id_photo','$photo','$identif_android','$tel_client','$nom_client','$moment_photo')";
$conn->query($InsertSQL);
...
// sans oublier de faire un close avant de quitter ta page
$conn->close();
echo json_encode($response);
$i++;
	}
	$con->close();

J'ai fermé le
$con->close();
juste après le
foreach($imageList as $image) {}$con->close();
et tout est fini.

Encore une fois grand merci, Twinuts.
Commenter la réponse de Twinuts