Bonjour,
je suis entrain de créer une interface qui va uploader un fichier csv depuis un poste local vers notre serveur.
Ce fichier contient des informations acquises depuis une station météo, En effet il s'agit de récupérer toutes ces informations et les stocker dans des tables(colonnes) de la base mysql.
Dans un premier temps j'ai fait une servlet qui fait le upload de fichier et le stocker temporairement dans le rép /build/web/uploads/
Ce code upload avec succés le fichier dans le répertoire désigné. par contre ce fichier doit être traité et parsé avant de stoker ces informations à la base de donnée.
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 @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); boolean isMultipart = ServletFileUpload.isMultipartContent(request); // if the request type is multipart/form-data if (isMultipart) { //create a file upload factory and upload servlet FileItemFactory factory = new DiskFileItemFactory(); ServletFileUpload upload = new ServletFileUpload(factory); try { //parse the request List de type FileItem List items = upload.parseRequest(request); Iterator iterator = items.iterator(); while (iterator.hasNext()) { FileItem item = (FileItem) iterator.next(); if (!item.isFormField()) { String fileName = item.getName(); String root = getServletContext().getRealPath("/"); File toSave = new File(root + "/uploads"); if (!toSave.exists()) { boolean status = toSave.mkdirs(); } File uploadedFile = new File(toSave + "/" + fileName); item.write(uploadedFile); out.println("File "+ fileName + " is uploaded successfully at the path " + root); InputStream input =item.getInputStream(); // le fichier dans la mémoire OutputStream output = new FileOutputStream("G:\\out.csv"); int readBytes=0; long length = fileName.length(); byte[] bytes = new byte[(int)length]; while((readBytes = input.read(bytes,0,(int)length)) != -1) { output.write(bytes, 0, readBytes); } input.close(); output.flush(); output.close(); input.close(); } } } catch (FileUploadException e) { e.printStackTrace(); } catch (Exception ex) { Logger.getLogger(FileUploadServlet.class.getName()).log(Level.SEVERE, null, ex); } finally { // } } }
Ici, je bloque.
Toute aide est appréciée. je mets le fichier exemple en annexe
Merci,
Partager