Bonsoir
Est-il possible d'envoyer un fichier sur un serveur via une requete http. Je voudrais éviter de passer par du ftp (car aucune lib issue de sun dans le jre)
Merci d'avance...![]()
Bonsoir
Est-il possible d'envoyer un fichier sur un serveur via une requete http. Je voudrais éviter de passer par du ftp (car aucune lib issue de sun dans le jre)
Merci d'avance...![]()
2 possibilités :
Soit tu envoies une requête POST vers un script/programme qui pourra traiter correctement le fichier. Pour ce faire, il y a pas mal de tutoriels sur le net.
Soit tu envoies une requête PUT pour autant que le serveur la comprenne correctement![]()
j'ai trouvé des trucs pas mal, mais qui utilise la classe HttpServlet, que je n'ai pas, ca doit etre dans le J2EE et moi je bosse avec le J2RE...
donc...je vois pas trop comment faire, une idée, un exemple ?
Toujours personne ?
alors je détails un peu plus...
de mon appli java, je veux envoyer un fichier, vers un fichier php qui va faire qq traitements...et par la meme uploader le fichier sur le serveur...
le fichier php est "prêt" il manque plus que l'envoie...mais j'ai du mal pour l'envoie...
ah oui...je suis en jre 1.5 aussi ca peut (pas) aider![]()
Je serais aussi intéressé par la réponse, personne ne peut nous donner une piste, un lien un bout de code, qqch ?
Tu as juste a rajouter ce jar : javax-servlet téléchargeable ici :
http://www.docjar.com/downloadjar.js...2003-05-04.jar
ou alors tu as l'option chercher dans la
cf la
et google un peu avec la classe urlConnection si ça ne te suffit pas...
Pour envoyer un fichier :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 public class ServFichier extends HttpServlet { public void doPost (HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException { String file=pathDeTonFichier; //On utilise un ServletOutputStream car on passe des informations binaires ServletOutputStream out = res.getOutputStream(); if (file == null) return; // On récupère le type Mime du fichier pour définir le ContentType de la transmission String contentType = getServletContext().getMimeType(file); res.setContentType(contentType); // On récupère la longueur du fichier à transmettre : garder la connexion ouverte pour tout le fichier res.setContentLength((int)new File(file).length()); try { // Envoi du fichier returnFile(file, out); } catch (FileNotFoundException e) { } catch (IOException e) { } }
Pour Ecrire le fichier dans le flux de sortie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 private void returnFile(String filename, OutputStream out) throws FileNotFoundException, IOException { FileInputStream fis = null; try { // ouverture du flux de lecture; fis = new FileInputStream(filename); // création d'un buffer de 4Ko ( améliore la vitesse de transmission) byte[] buf = new byte[4 * 1024]; int bytesRead; while ((bytesRead = fis.read(buf)) != -1) { //Ecriture dans le flus de sortie out.write(buf, 0, bytesRead); } } finally { // Fermeture du flux d'entrée if (fis != null) fis.close(); } } }
et avec l'autre méthode (de jakarta) j'ai un retour "pas bon" de ma page :
visiblement ce que recoit mon script php est....vide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 12 mars 2008 22:13:53 org.apache.commons.httpclient.HttpMethodBase getResponseBody ATTENTION: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended. got it<br><br>wrote it<br><br /> <b>Warning</b>: fread() [<a href='function.fread'>function.fread</a>]: Length parameter must be greater than 0 in <b>/homepages/14/d230523123/htdocs/2.0/myupload.php</b> on line <b>13</b><br />
et ce script ressemble a ca
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <?php echo "got it<br>"; $filecontent = $_POST['myfile']; $myFile = "toto.jpg"; echo $filecontent."<br>"; $fh = fopen($myFile, 'w') or die("can't open file"); fwrite($fh, $filecontent); fclose($fh); echo "wrote it<br>"; $fh = fopen($myFile, 'r') or die("can't open file"); echo fread($fh, filesize ($myFile)); fclose($fh); ?>
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager