54 lines
2.0 KiB
Java
54 lines
2.0 KiB
Java
package com.baeldung.servlets;
|
|
|
|
import com.baeldung.Constants;
|
|
|
|
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;
|
|
import java.io.File;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.IOException;
|
|
|
|
import static com.baeldung.Constants.UPLOAD_DIRECTORY;
|
|
|
|
@WebServlet(
|
|
name = "MultiPartServlet",
|
|
urlPatterns = {"/multiPartServlet"}
|
|
)
|
|
@MultipartConfig(fileSizeThreshold = 1024 * 1024, maxFileSize = 1024 * 1024 * 5, maxRequestSize = 1024 * 1024 * 5 * 5)
|
|
public class MultipartServlet extends HttpServlet {
|
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
private String getFileName(Part part) {
|
|
for (String content : part.getHeader("content-disposition").split(";")) {
|
|
if (content.trim().startsWith("filename"))
|
|
return content.substring(content.indexOf("=") + 2, content.length() - 1);
|
|
}
|
|
return Constants.DEFAULT_FILENAME;
|
|
}
|
|
|
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
|
|
|
String uploadPath = getServletContext().getRealPath("") + File.separator + UPLOAD_DIRECTORY;
|
|
File uploadDir = new File(uploadPath);
|
|
if (!uploadDir.exists())
|
|
uploadDir.mkdir();
|
|
|
|
try {
|
|
String fileName = "";
|
|
for (Part part : request.getParts()) {
|
|
fileName = getFileName(part);
|
|
part.write(uploadPath + File.separator + fileName);
|
|
}
|
|
request.setAttribute("message", "File " + fileName + " has uploaded successfully!");
|
|
} catch (FileNotFoundException fne) {
|
|
request.setAttribute("message", "There was an error: " + fne.getMessage());
|
|
}
|
|
getServletContext().getRequestDispatcher("/result.jsp").forward(request, response);
|
|
}
|
|
} |