Envoie de fichier encodé en URLEncode - Java - Programmation
Marsh Posté le 07-03-2007 à 13:34:44
Salut,
Donc quand je dis "ça plante" c'est que le md5 du fichier avant transfert n'est pas le même que celui après le transfert.
Quand tu dis "un tableau de bytes" à quoi penses tu? Parce que là je prend le tableau de bytes et je l'encode juste pour être sur qu'il n'y aura pas de problèmes avec des caractères spéciaux.
Merci beaucoup
Marsh Posté le 07-03-2007 à 14:04:39
Quitte à faire de l'envoi de binaire par HTTP fait un encodage en Base 64. Par contre ça augmentera le volume d'information à transferer d'envion 1/3
Marsh Posté le 07-03-2007 à 14:25:59
J'ai aussi testé mais le résultat à l'arrivée est php n'arrive pas a le décoder (base64_décode retourne false)
Et si je décode avec ruby il y arrive mais il manque des caractères...
Voilà tout monde code au cas où :
Code :
|
Marsh Posté le 07-03-2007 à 14:32:49
Pareil
J'ai trouvé ce sujet : http://forum.java.sun.com/thread.j [...] dID=226413
Où qqn semble avoir un peu le même besoin que moi mais je vois pas vraiment de différence flagrante entre sa version et la mienne ..
Marsh Posté le 07-03-2007 à 14:34:11
sinon
new String(buffer,0,nbChar).getBytes());
est faux car tu lis du binaire que tu transforme en string pour récupérer du binaire.
Marsh Posté le 07-03-2007 à 14:53:19
J'ai essayé en l'enlevant et ça marche toujours pas.
Par contre j'ai remarqué quelque chose que je comprend pas. Si je change la taille du buffer, ce que reçoit mon script php change aussi ... Comment ça s'explique?
Marsh Posté le 07-03-2007 à 16:49:39
euh pourquoi par URL avec un POST ou PUT ce serai pas mieux ?
(par url en plus je crois qu'il y a une taille max à pas depasser !!!!)
Jakarta Commons HttpClient peut éventuellement t'aider
Marsh Posté le 07-03-2007 à 17:01:54
Hello,
Je viens de trouver mon bonheur :
http://www.devx.com/Java/Article/17679/1954?pf=true
Merci à son auteur qui non seulement est compétent mais en plus laisse ses scripts libre
Marsh Posté le 08-03-2007 à 15:05:20
J'ai pas accès d'ici vers ton lien, mais je dirai comme ca que ton encodage 64, tu le fais sur le tableau de bytes et pas sur une String créée à partir de ce byte[].
En principe comme c normalisé, tu pourras utiliser sans problème des données en base64 quel que soit le système sur lequel tu l'utilises.
Marsh Posté le 08-03-2007 à 17:23:42
Salut,
En fait "mon lien" permet d'envoyer un fichier par http en emulant un simple formulaire html ... Quand je suis tombé sur le lien j'étais en train d'écrire une classe qui faisait exactement ça Heureusement je l'ai trouvé ,parce qu'en plus sa classe est bien plus clean que la mienne
Marsh Posté le 07-03-2007 à 13:04:22
Bonjour,
je voudrais transmettre un fichier binaire (en fait une video ou un fichier son) sous forme d'un string d'une application Java à une application PHP.
J'ai pensé le faire en l'encodant dans l'application java avec :
URLEncoder.encode(new String(buffer,0,nbChar), "UTF-8" ).getBytes("UTF-8" );
Qui se trouve dans une boucle while lisant pas par pas le fichier en question.
Dans mon php je le recuperes avec :
$uploadedFile = utf8_decode(urldecode($_POST['uploadedFile']));
Autant avec des fichiers de texte ça marche super bien, autant avec un petit mp3 (~2.5 Mo) ça plante. Est-ce que qqn pourrait m'expliquer pourquoi?
Ou alors me donner une meilleure méthode de transférer ça?
Merci beaucoup
---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait