package net.dongliu.requests.mock; import net.dongliu.commons.io.InputStreams; import org.eclipse.jetty.server.Request; import javax.servlet.MultipartConfigElement; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.nio.charset.StandardCharsets; import java.util.Collection; /** * @author Liu Dong {@literal <[email protected]>} */ public class MockMultiPartServlet extends HttpServlet { private static final MultipartConfigElement MULTI_PART_CONFIG = new MultipartConfigElement(System.getProperty ("java.io.tmpdir")); @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setAttribute(Request.__MULTIPART_CONFIG_ELEMENT, MULTI_PART_CONFIG); Collection<Part> parts = request.getParts(); response.setContentType("text/plain"); response.setCharacterEncoding("UTF-8"); response.setStatus(HttpServletResponse.SC_OK); OutputStream out = response.getOutputStream(); for (Part part : parts) { out.write(part.getName().getBytes(StandardCharsets.UTF_8)); out.write('\n'); if (part.getContentType() != null) { out.write(part.getContentType().getBytes(StandardCharsets.UTF_8)); out.write('\n'); } try (InputStream in = part.getInputStream()) { InputStreams.transferTo(in, out); } out.write('\n'); } } }