Advertisement
Guest User

Untitled

a guest
Apr 24th, 2014
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.15 KB | None | 0 0
  1. package com.capgmini.elogbook;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5. import java.nio.file.Files;
  6. import java.nio.file.Path;
  7. import java.nio.file.Paths;
  8. import java.nio.file.StandardCopyOption;
  9.  
  10. import javax.servlet.ServletException;
  11. import javax.servlet.annotation.MultipartConfig;
  12. import javax.servlet.annotation.WebInitParam;
  13. import javax.servlet.annotation.WebServlet;
  14. import javax.servlet.http.HttpServlet;
  15. import javax.servlet.http.HttpServletRequest;
  16. import javax.servlet.http.HttpServletResponse;
  17. import javax.servlet.http.Part;
  18.  
  19. //configuration de la servlet
  20. @WebServlet(name="FileUploadServlet",urlPatterns={"/"},initParams={
  21. @WebInitParam(name="destination", value="D:\\Users\\FBERNARD\\Desktop\\upload")})
  22.  
  23. //configuration de la gestion du multipart
  24. @MultipartConfig(fileSizeThreshold=1024*1024,
  25. maxFileSize=1024*1024*5, maxRequestSize=1024*1024*5*5)
  26.  
  27. /**
  28. * @author FBERNARD
  29. * Servlet permetant de recevoir un fichier d'une requete post et de l'écrire sur le disque
  30. */
  31. public class FileUpload extends HttpServlet {
  32.  
  33. /**
  34. *
  35. */
  36. private static final long serialVersionUID = -5157628072489097439L;
  37.  
  38. /**
  39. * Traitement de la requete POST
  40. */
  41. @Override
  42. protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  43. throws ServletException, IOException {
  44.  
  45. //reponse au format JSON / UTF-8
  46. resp.setContentType("application/json;charset=UTF-8");
  47.  
  48. //dossier de destination définie dans la configuration de la servlet
  49. String destParam = (String) this.getServletConfig().getInitParameter("destination");
  50. //récupération de la Part correspondant à l'entrée nommé file
  51. final Part filePart = req.getPart("file");
  52. final String fileName = getFileName(filePart);
  53.  
  54. //construction du Path complet de destination
  55. Path destinationPath = Paths.get(destParam,fileName);
  56.  
  57. //permet d'écrire la réponse de la requete Http
  58. PrintWriter writer = resp.getWriter();
  59. try {
  60. //copy du fichier sur le disque
  61. long copiedBytes = Files.copy(filePart.getInputStream(),destinationPath,StandardCopyOption.REPLACE_EXISTING);
  62.  
  63. /**
  64. * Si besoin d'appeler un webservice vérifiant le fichier (de manière synchrone) le faire ici
  65. */
  66.  
  67. //renvoie d'un message de succés
  68. writer.println("{status:OK,copiedBytes:"+copiedBytes+"}");
  69. } catch (Exception e) {
  70. //renvoie d'un message d'erreur
  71. writer.println("{status:error,message:" + e.getMessage()+"}");
  72. } finally {
  73. if (writer != null) {
  74. writer.close();
  75. }
  76. }
  77.  
  78. }
  79.  
  80.  
  81. /**
  82. * Récupère le nom du fichier envoyé dans la requete Http
  83. * @param part: part correspondant au fichier
  84. * @return nom du fichier si trouvé null sinon
  85. */
  86. private String getFileName(final Part part) {
  87. for (String content : part.getHeader("content-disposition").split(";")) {
  88. if (content.trim().startsWith("filename")) {
  89. return content.substring(
  90. content.indexOf('=') + 1).trim().replace("\"", "");
  91. }
  92. }
  93. return null;
  94. }
  95.  
  96.  
  97.  
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement