Bonjour à tous et merci pour votre attention.

J'utilise gwt, pour créé une application web. Cette application (côté client) a un file upload comme widget dans un form, pour pouvoir uploadé des fichiers excel et les lire pour en soutirer leur contenu (et les traiter ensuite).

J'ai donc créér une servlet et un service qui devrait me permettre de faire ce que je viens de dire.

Le problème c'est que j'ai cette erreur quand je veux uploader un fichier :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
java.security.AccessControlException: access denied (java.io.FilePermission /tmp/test.xls read)
Les données semblent ainsi être protégés et ne sont pas lues... Donc si jamais vous avez une idée sur la question ça m'aiderait beaucoup (normal hein ^^).

Je vous donne le code de la servlet :

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
 
package com.pv.terence.gui.GlocGuiHomepage.server.servlet;
 
import java.io.File;
import java.io.IOException;
import java.util.List;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
 
public class FileXLSStorePoi extends HttpServlet {
 
	public static String RESOURCE_DIR = "/tmp";
    String url;
 
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("Entrer dans service servlet");
        System.out.println("requete existante : " + req.getQueryString());
		uploadFile(req, resp);
 
	}
 
	/**
         * The following method uploads the xls file and calls the callXLSReader
         * @param req
         * @param resp
         * @return
         */
	public void uploadFile(HttpServletRequest req, HttpServletResponse resp) {
 
		System.out.println("Je suis dans uploadFile");
        String relativePath = null;
 
        // Create a factory for disk-based file items
        FileItemFactory factory = new DiskFileItemFactory();
 
        // Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload(factory);
 
        String contents = null;
 
        // Parse the request
        try {
            List /* FileItem */ items = upload.parseRequest(req);
            for (int i = 0; i < items.size(); i++) {
                FileItem fileItem = (FileItem) items.get(i);
                if (fileItem.isFormField()) {
                    // well, the relativePath better come first... (to be considered if random uploads fail)
                    if (fileItem.getFieldName().equals("filename")) {
                        relativePath = fileItem.getString();
                        System.out.println("relative path : " + relativePath);
                    }
                }
                else {
                    String fileName = this.basename(fileItem.getName());
                    System.out.println("File name : " + fileName);
                    File uploadedFile = new File(RESOURCE_DIR + File.separator + relativePath, fileName);
                    System.out.println("Path " + RESOURCE_DIR + File.separator + relativePath);
                    uploadedFile.mkdirs();
                    uploadedFile.delete();
                    uploadedFile.createNewFile();
                    fileItem.write(uploadedFile);
                    url=uploadedFile.getAbsolutePath();
                }
            }
            System.out.println(" url="+url);
        } catch (FileUploadException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        callXLSReader(url, resp);
 
	}
 
	/**
     * IE doesn't follow the RFC and sends file names as complete paths.
     * This method trims it back to the file name (as it is supposed to be).
     */
    public String basename(String name) {
        // We look for the last '\\' or '/'
        name = name.replace('\\', '/');
        int index = name.lastIndexOf('/');
        if (index >= 0) {
            return name.substring(index+1);
        }
        return name;
    }
 
	public void callXLSReader(String url, HttpServletResponse resp){
 
                //je créé le service et je lance la méthode de traitement
		com.pv.terence.gui.GlocGuiHomepage.server.ImportPoiListServiceImpl service = new com.pv.terence.gui.GlocGuiHomepage.server.ImportPoiListServiceImpl();
		System.out.println("URL="+url);
		service.loadPoiList(url);
		resp.setContentType("text/html");
 
	}
 
}
Merci d'avance