package ru.semiot.platform.apigateway.config;
import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import javax.servlet.AsyncContext;
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.HttpSession;
import javax.servlet.http.Part;
@WebServlet(urlPatterns = "/UploadDriverHandler", asyncSupported = true)
@MultipartConfig
public class UploadDriverHandler extends HttpServlet {
private static final Logger logger = LoggerFactory.getLogger(UploadDriverHandler.class);
private static final String ATTR_INPUSTREAM = "inputStreamFile";
private static final String ATTR_FILENAME = "filename";
private static final String PART_NAME = "bundlefile";
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
Part part = request.getPart(PART_NAME);
if (part != null && part.getInputStream() != null && part.getSize() > 0) {
HttpSession session = request.getSession(true);
session.setAttribute(ATTR_INPUSTREAM, part.getInputStream());
session.setAttribute(ATTR_FILENAME, part.getSubmittedFileName());
response.sendRedirect("/config/ConfigurationDriver");
} else {
final AsyncContext ctx = request.startAsync();
if (logger.isDebugEnabled()) {
for (Part p : request.getParts()) {
logger.debug("Part name: {}", p.getName());
logger.debug("Part [{}] fileName: {}", p.getName(), p.getSubmittedFileName());
logger.debug("Part [{}] size: {}", p.getName(), p.getSize());
String partOfIS = p.getInputStream() == null ? "null" :
new String(IOUtils.toByteArray(p.getInputStream(), 100));
logger.debug("Part [{}] inputstream (first 100 bytes): {}", p.getName(), partOfIS);
}
}
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
ctx.complete();
}
}
}