Bonjour,
Je dois faire un logiciel dans lequel les utilisateurs pourront envoyer des images sur un serveur. Cependant, je n'arrive pas à faire partir ces images.
Je suis obligé de passer par la méthode HTTP je n'ai pas le droit d'utiliser les sockets.
Voilà ma classe Java :
Et voilà ma page "import.php" :
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 package model; import java.io.File; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.mime.HttpMultipartMode; import org.apache.http.entity.mime.MultipartEntityBuilder; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; /** * * @author pyroman */ public class UploadFile { public UploadFile() { try { HttpClient httpclient = HttpClientBuilder.create().build(); HttpPost httppost = new HttpPost("http://localhost/serenateserv/import.php"); FileBody bin = new FileBody( new File("c:/Desert.jpg")); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); builder.addPart("image", bin); builder.addBinaryBody("image", new File("c:/Desert.jpg")); // builder.addTextBody("image", "USER_AGENT"); HttpEntity entity = builder.build(); httppost.setEntity(entity); System.out.println("executing request " + httppost.getRequestLine()); HttpResponse response = httpclient.execute(httppost); HttpEntity resEntity = response.getEntity(); if (resEntity != null) { String page = EntityUtils.toString(resEntity); System.out.println("PAGE :" + page); } } catch (IOException ex) { Logger.getLogger(UploadFile.class.getName()).log(Level.SEVERE, null, ex); } } }
Lorsque je lance ma classe j'ai la réponse : "pas d'image reçue".
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?php if (isset($_FILE['image'])){ $nomDeBase = $_FILES['image']['name']; //Le nom original du fichier, comme sur le disque du visiteur (exemple : mon_icone.png). $nom = "image/".$nomDeBase; $resultat = move_uploaded_file($_FILES['Image']['tmp_name'],$nom); }else{ echo "pas d'image reçue"; } ?>
Le problème est que je ne sais pas où ça ne va pas car si j'envoie des données du genre String, les infos passent très bien pour les rattraper en $_POST. J'ai l'impression que l'image ne s'envoie pas en $_FILE.
Je ne suis pas sûr de mettre bien fait comprendre mais je peux donner des précisions si besoin.
Je vous remercie d'avance pour votre aide.
Partager