Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.capgmini.elogbook;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.nio.file.Files;
- import java.nio.file.Path;
- import java.nio.file.Paths;
- import java.nio.file.StandardCopyOption;
- import javax.servlet.ServletException;
- import javax.servlet.annotation.MultipartConfig;
- import javax.servlet.annotation.WebInitParam;
- import javax.servlet.annotation.WebServlet;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.Part;
- //configuration de la servlet
- @WebServlet(name="FileUploadServlet",urlPatterns={"/"},initParams={
- @WebInitParam(name="destination", value="D:\\Users\\FBERNARD\\Desktop\\upload")})
- //configuration de la gestion du multipart
- @MultipartConfig(fileSizeThreshold=1024*1024,
- maxFileSize=1024*1024*5, maxRequestSize=1024*1024*5*5)
- /**
- * @author FBERNARD
- * Servlet permetant de recevoir un fichier d'une requete post et de l'écrire sur le disque
- */
- public class FileUpload extends HttpServlet {
- /**
- *
- */
- private static final long serialVersionUID = -5157628072489097439L;
- /**
- * Traitement de la requete POST
- */
- @Override
- protected void doPost(HttpServletRequest req, HttpServletResponse resp)
- throws ServletException, IOException {
- //reponse au format JSON / UTF-8
- resp.setContentType("application/json;charset=UTF-8");
- //dossier de destination définie dans la configuration de la servlet
- String destParam = (String) this.getServletConfig().getInitParameter("destination");
- //récupération de la Part correspondant à l'entrée nommé file
- final Part filePart = req.getPart("file");
- final String fileName = getFileName(filePart);
- //construction du Path complet de destination
- Path destinationPath = Paths.get(destParam,fileName);
- //permet d'écrire la réponse de la requete Http
- PrintWriter writer = resp.getWriter();
- try {
- //copy du fichier sur le disque
- long copiedBytes = Files.copy(filePart.getInputStream(),destinationPath,StandardCopyOption.REPLACE_EXISTING);
- /**
- * Si besoin d'appeler un webservice vérifiant le fichier (de manière synchrone) le faire ici
- */
- //renvoie d'un message de succés
- writer.println("{status:OK,copiedBytes:"+copiedBytes+"}");
- } catch (Exception e) {
- //renvoie d'un message d'erreur
- writer.println("{status:error,message:" + e.getMessage()+"}");
- } finally {
- if (writer != null) {
- writer.close();
- }
- }
- }
- /**
- * Récupère le nom du fichier envoyé dans la requete Http
- * @param part: part correspondant au fichier
- * @return nom du fichier si trouvé null sinon
- */
- private String getFileName(final Part part) {
- for (String content : part.getHeader("content-disposition").split(";")) {
- if (content.trim().startsWith("filename")) {
- return content.substring(
- content.indexOf('=') + 1).trim().replace("\"", "");
- }
- }
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement