Я пытаюсь загрузить файл .csv из JSP в сервлет. Он отлично работает на моей локальной машине (Java 1.8 на Websphere 8.5.5.11), но когда я перемещаю его в тестовые среды (Java 1.6 на WebSphere 8.5.5.12), я получаю сообщение об ошибке:
java.lang.UnsupportedOperationException: SRVE8020E: Сервлет не принимает многокомпонентные запросы
Что кажется странным, потому что isMultipart возвращается как истина.
Вот моя форма JSP:
<form method="POST" name="batchForm" action="BatchTierProcessing" enctype="multipart/form-data">
<input type="hidden" name="pageName" value="batchTierProcess"/>
<text>Upload File for Batch Processing:</text>
<input type="file" name="file" id="file"/>
<input type="submit" value="Upload" name="upload" id="upload"/>
</form>
Вот мой сервлет:
@WebServlet(name = "UWTSAS", urlPatterns = {"/UWTSAS"}, loadOnStartup = 1)
@MultipartConfig
public class PMSTandalone extends AWRServlet {
@Override
protected void doPost(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletException, IOException {
boolean isMultipart = ServletFileUpload.isMultipartContent(aRequest);
FileItem csv = null;
String pageNameMultiPart = "";
Exception fakeException = new Exception();
PageNameEnum pageName = null;
Part filePart = null;
//if a multipart request (batch process) grab file before request is touched by anything else
if(isMultipart) {
LogMessageUtility.log("INFO", "Is multipart request", fakeException);
filePart = aRequest.getPart("file");
pageName = PageNameEnum.getValue("pmSABTS");
LogMessageUtility.log("INFO", "Page Name Multipart", fakeException);
}
else {
pageName = PageNameEnum.getValue(aRequest.getParameter("pageName"));
}
HttpSession aSession = aRequest.getSession(false);
if(aSession == null) {
aSession = aRequest.getSession(true);
}
buildUserSession(aRequest, aSession);
boolean batchSuccessful = true;
String destination = "PMStandBatchRes";
LogMessageUtility.log("INFO", "Batch Processing Started", fakeException);
try {
batchSuccessful = getFinalScoresBatch(aRequest, aResponse, aSession, filePart);
}
catch(Exception e) {
LogMessageUtility.log("ERROR", e.getMessage(), e);
}
}
if(!destination.equals("") && batchSuccessful) {
dispatchToResource(aRequest, aResponse, WebRatingProperty.getSetting(destination));
}
}
Я попытался настроить Eclipse для компиляции этого проекта с использованием Java 6, но безуспешно. Насколько я знаю, я не могу настроить локальный экземпляр WebSphere для работы с 1.6. Я попытался использовать Apache Commons FileUpload и Commons IO вместо того, чтобы делать это с помощью Java, но безуспешно, и начинаю задумываться над тем, как выяснить, как анализировать запрос вручную.
У кого-нибудь есть идеи о том, что происходит, или идеи о том, что я должен попробовать? Я уже просмотрел эти вопросы и ответы:
Как загрузить файлы на сервер, используя JSP / Servlet?
Удобный способ анализа входящих параметров multipart / form-data в сервлете
Как я могу прочитать другие параметры в многочастной форме с Apache Commons
Как загрузить файлы на сервер, используя JSP / Servlet?
Заранее спасибо за любую помощь или идеи.