avec php, lorsque je traite la reponse, si je regarde la variable $_FILES, elle est vide :(
C'est comme si la ligne avec Content-Disposition ne servait à rien...
Et si j'utilise un formulaire, ca marche sans pb...
Quelqu'un a une idee... j'ai oublié qque chose?
Voici le code que j'utilise...
private void upload()
{
int k;
byte[] abyte = new byte[4096];
Socket s = null;
DataOutputStream dataOS = null;
DataInputStream CatchIS = null;
try
{
s = new Socket(host, port);
}
catch(IOException e)
{
System.out.println("Erreur d'ouverture de socket: " + e.toString());
}
try
{
dataOS = new DataOutputStream(s.getOutputStream());
dataOS.writeBytes("POST " + serverPath + "traitement.php HTTP/1.0\r\n");
dataOS.writeBytes("Content-Length : "+ "4096" +"\r\n");
dataOS.writeBytes("Content-Type : multipart/form-data\r\n");
dataOS.writeBytes("Content-Disposition: form-data; name="fichier"; filename="test.txt"\r\n");
dataOS.writeBytes("\r\n");
}
catch(IOException e)
{
System.out.println("Erreur lors de l'envoie de l'entete: " + e.toString());
}
try
{
FileInputStream fileIS = new FileInputStream(fileToUpload);
while ((k = fileIS.read(abyte)) != -1)
{
dataOS.write(abyte, 0, k);
dataOS.flush();
}
dataOS.writeBytes("\r\n");
}
catch(IOException e)
{
System.out.println(e);
}
try
{
CatchIS = new DataInputStream(s.getInputStream());
FileOutputStream fileOS = new FileOutputStream("c:\\test2.txt");
while ((k = CatchIS.read(abyte)) != -1)
{
fileOS.write(abyte, 0, k);
fileOS.flush();
}
}
catch(IOException e){ }
gorbadoc_51
Messages postés13Date d'inscriptionvendredi 6 février 2004StatutMembreDernière intervention15 mars 2006 4 juil. 2005 à 15:44
Ok, mais le probleme c que le fichier texte c'est pour les testes, apres ca doit etre des images, des .doc, etc... du binaire en fait...
Ton code est bien (il est plus propre que le mien :) mais il ne résoud pas le probleme. Je pense que c'est un probleme dans ce que j'envoie dans le header. Je ne doit pas bien suivre le protocole des requetes HTTP... Mais meme mon meilleur ami (cf google :) ne me trouve rien sur ce sujet...
Syruis
Messages postés181Date d'inscriptionmardi 8 juin 2004StatutMembreDernière intervention28 avril 2009 4 juil. 2005 à 15:59
ok en effet pour les binaire post est bien mieux :)
Merci pour mon code.
Ensuite fait gaffe les serveurs Apache ne peuveut pas accepter ce genre
de requete pour une raison que je n'ai pas résolu. Pourtant sur un IIS
5 la même requete fonctionne !!!!
gorbadoc_51
Messages postés13Date d'inscriptionvendredi 6 février 2004StatutMembreDernière intervention15 mars 2006 4 juil. 2005 à 16:07
Effectivement le serveur tourne sous apache, mais je n'ai pas de serveur IIS sous la main... :[
C pas cool tout ca, parce qu'au final ca doit marcher sous apache. C'est bizare qu'il ne l'accepte pas... J'ai trouvé les spec du protocole HTTP, et apparement je les suis...
Syruis
Messages postés181Date d'inscriptionmardi 8 juin 2004StatutMembreDernière intervention28 avril 2009 4 juil. 2005 à 16:22
Je suis d'accord avec toi moi aussi j'ai un Apache en local et j'ai
fait mille et un test,... jusqu'au moment ou j'ai vu que ca tournait
nickel sous IIS!!!
C une question que Apache détecte d'ou viens la requete et il faut le reglé pour accepter les requetes post extérieures...