{"id":880,"date":"2020-01-06T04:43:15","date_gmt":"2020-01-06T04:43:15","guid":{"rendered":"https:\/\/codeinsightacademy.com\/blog\/?p=880"},"modified":"2020-01-06T04:43:15","modified_gmt":"2020-01-06T04:43:15","slug":"servlet-file-upload","status":"publish","type":"post","link":"https:\/\/codeinsightacademy.com\/blog\/java\/servlet-file-upload\/","title":{"rendered":"Servlet File Upload"},"content":{"rendered":"<p>Ref:<br \/>\n<a href=\"https:\/\/www.codejava.net\/java-ee\/servlet\/java-file-upload-example-with-servlet-30-api\">https:\/\/www.codejava.net\/java-ee\/servlet\/java-file-upload-example-with-servlet-30-api<\/a><\/p>\n<p><a href=\"https:\/\/www.baeldung.com\/upload-file-servlet\">https:\/\/www.baeldung.com\/upload-file-servlet<\/a><\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"gIcn2nq9xk\"><p><a href=\"https:\/\/www.journaldev.com\/2122\/servlet-3-file-upload-multipartconfig-part\">Servlet 3 File Upload &#8211; @MultipartConfig, Part<\/a><\/p><\/blockquote>\n<p><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" src=\"https:\/\/www.journaldev.com\/2122\/servlet-3-file-upload-multipartconfig-part\/embed#?secret=gIcn2nq9xk\" data-secret=\"gIcn2nq9xk\" width=\"600\" height=\"338\" title=\"&#8220;Servlet 3 File Upload &#8211; @MultipartConfig, Part&#8221; &#8212; JournalDev\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">import java.io.File;\r\nimport java.io.IOException;\r\nimport java.io.PrintWriter;\r\n\r\nimport javax.servlet.ServletException;\r\nimport javax.servlet.annotation.MultipartConfig;\r\nimport javax.servlet.annotation.WebServlet;\r\nimport javax.servlet.http.HttpServlet;\r\nimport javax.servlet.http.HttpServletRequest;\r\nimport javax.servlet.http.HttpServletResponse;\r\nimport javax.servlet.http.Part;\r\n\r\n\/**\r\n * Servlet implementation class MultiPartServlet\r\n *\/\r\n@WebServlet(\"\/multiPartServlet\")\r\n@MultipartConfig(fileSizeThreshold=1024*1024*10, \t\/\/ 10 MB \r\nmaxFileSize=1024*1024*50,      \t\/\/ 50 MB\r\nmaxRequestSize=1024*1024*100)   \t\/\/ 100 MB\r\npublic class MultiPartServlet extends HttpServlet {\r\n  private static final long serialVersionUID = 1L;\r\n       \r\n    \/**\r\n     * @see HttpServlet#HttpServlet()\r\n     *\/\r\n    public MultiPartServlet() {\r\n        super();\r\n        \/\/ TODO Auto-generated constructor stub\r\n    }\r\n\r\n  \/**\r\n   * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)\r\n   *\/\r\n  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n    \/\/ TODO Auto-generated method stub\r\n    response.getWriter().append(\"Served at: \").append(request.getContextPath());\r\n    \r\n    PrintWriter out = response.getWriter();\r\n  }\r\n\r\n  private static final String SAVE_DIR = \"uploadFiles\";\r\n  \r\n  \/**\r\n   * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)\r\n   *\/\r\n  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {\r\n    \r\n    \/\/ gets absolute path of the web application\r\n        String appPath = request.getServletContext().getRealPath(\"\");\r\n        \/\/ constructs path of the directory to save uploaded file\r\n        String savePath = appPath + File.separator + SAVE_DIR;\r\n         \r\n        \/\/ creates the save directory if it does not exists\r\n        File fileSaveDir = new File(savePath);\r\n        if (!fileSaveDir.exists()) {\r\n            fileSaveDir.mkdir();\r\n        }\r\n    \r\n    \r\n    for (Part part : request.getParts()) {\r\n        String fileName = extractFileName(part);\r\n\/\/\t\t    part.write(fileName);\r\n        response.getWriter().println(\"\/home\/shailesh\/eclipse-workspace\/TestProject\/WebContent\/images\/\" + fileName);\r\n        part.write(\"\/home\/shailesh\/eclipse-workspace\/TestProject\/WebContent\/images\/\" + fileName);\r\n    }\r\n    response.getWriter().println(\"Uploaded...\");\r\n    doGet(request, response);\r\n  }\r\n  \r\n  private String extractFileName(Part part) {\r\n      String contentDisp = part.getHeader(\"content-disposition\");\r\n      String[] items = contentDisp.split(\";\");\r\n      for (String s : items) {\r\n          if (s.trim().startsWith(\"filename\")) {\r\n              return s.substring(s.indexOf(\"=\") + 2, s.length()-1);\r\n          }\r\n      }\r\n      return \"\";\r\n  }\r\n\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">&lt;project xmlns=\"http:\/\/maven.apache.org\/POM\/4.0.0\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xsi:schemaLocation=\"http:\/\/maven.apache.org\/POM\/4.0.0 https:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd\"&gt;\r\n  &lt;modelVersion&gt;4.0.0&lt;\/modelVersion&gt;\r\n  &lt;groupId&gt;TestProject&lt;\/groupId&gt;\r\n  &lt;artifactId&gt;TestProject&lt;\/artifactId&gt;\r\n  &lt;version&gt;0.0.1-SNAPSHOT&lt;\/version&gt;\r\n  &lt;packaging&gt;war&lt;\/packaging&gt;\r\n  &lt;build&gt;\r\n    &lt;sourceDirectory&gt;src&lt;\/sourceDirectory&gt;\r\n    &lt;plugins&gt;\r\n      &lt;plugin&gt;\r\n        &lt;artifactId&gt;maven-compiler-plugin&lt;\/artifactId&gt;\r\n        &lt;version&gt;3.8.0&lt;\/version&gt;\r\n        &lt;configuration&gt;\r\n          &lt;source&gt;1.8&lt;\/source&gt;\r\n          &lt;target&gt;1.8&lt;\/target&gt;\r\n        &lt;\/configuration&gt;\r\n      &lt;\/plugin&gt;\r\n      &lt;plugin&gt;\r\n        &lt;artifactId&gt;maven-war-plugin&lt;\/artifactId&gt;\r\n        &lt;version&gt;3.2.3&lt;\/version&gt;\r\n        &lt;configuration&gt;\r\n          &lt;warSourceDirectory&gt;WebContent&lt;\/warSourceDirectory&gt;\r\n        &lt;\/configuration&gt;\r\n      &lt;\/plugin&gt;\r\n    &lt;\/plugins&gt;\r\n  &lt;\/build&gt;\r\n  &lt;dependencies&gt;\r\n  \t&lt;!-- https:\/\/mvnrepository.com\/artifact\/org.springframework\/spring-webmvc --&gt;\r\n  &lt;dependency&gt;\r\n    \t&lt;groupId&gt;org.springframework&lt;\/groupId&gt;\r\n   \t \t&lt;artifactId&gt;spring-webmvc&lt;\/artifactId&gt;\r\n    \t&lt;version&gt;5.2.1.RELEASE&lt;\/version&gt;\r\n  &lt;\/dependency&gt;\r\n  \r\n  &lt;!-- Apache Commons FileUpload --&gt;\r\n    &lt;dependency&gt;\r\n        &lt;groupId&gt;commons-fileupload&lt;\/groupId&gt;\r\n        &lt;artifactId&gt;commons-fileupload&lt;\/artifactId&gt;\r\n        &lt;version&gt;1.3.2&lt;\/version&gt;\r\n    &lt;\/dependency&gt;\r\n\r\n    &lt;!-- Apache Commons IO --&gt;\r\n    &lt;dependency&gt;\r\n        &lt;groupId&gt;commons-io&lt;\/groupId&gt;\r\n        &lt;artifactId&gt;commons-io&lt;\/artifactId&gt;\r\n        &lt;version&gt;2.5&lt;\/version&gt;\r\n    &lt;\/dependency&gt;\r\n  \r\n  &lt;\/dependencies&gt;\r\n&lt;\/project&gt;<\/pre>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"null\">&lt;form method=\"post\" action=\"multiPartServlet\" enctype=\"multipart\/form-data\"&gt;\r\n  Choose a file: &lt;input type=\"file\" name=\"multiPartServlet\" \/&gt;\r\n    &lt;input type=\"submit\" value=\"Upload\" \/&gt;\r\n&lt;\/form&gt;<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ref: https:\/\/www.codejava.net\/java-ee\/servlet\/java-file-upload-example-with-servlet-30-api https:\/\/www.baeldung.com\/upload-file-servlet Servlet 3 File Upload &#8211; @MultipartConfig, Part import java.io.File; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.MultipartConfig; 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; \/** * Servlet implementation class MultiPartServlet *\/ @WebServlet(&#8220;\/multiPartServlet&#8221;) @MultipartConfig(fileSizeThreshold=1024*1024*10, \/\/ 10 MB maxFileSize=1024*1024*50, \/\/ 50 MB maxRequestSize=1024*1024*100) \/\/ 100 MB public class MultiPartServlet extends HttpServlet [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"_links":{"self":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/posts\/880"}],"collection":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/comments?post=880"}],"version-history":[{"count":5,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/posts\/880\/revisions"}],"predecessor-version":[{"id":885,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/posts\/880\/revisions\/885"}],"wp:attachment":[{"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/media?parent=880"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/categories?post=880"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codeinsightacademy.com\/blog\/wp-json\/wp\/v2\/tags?post=880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}