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 :
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);
        }
    }
}
Et voilà ma page "import.php" :
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";
}
 
?>
Lorsque je lance ma classe j'ai la réponse : "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.