Я пишу функцию портлета для загрузки файла Excel в серверную часть для обработки.
И я хочу, чтобы страница не обновлялась и позволяла мне изменить страницу после успешной загрузки.
Я пытался использовать ajax для загрузки файла, но он не работает.
HTML часть
<portlet:actionURL var="uploadWorkbook" name="uploadWorkbook"></portlet:actionURL>
<b>Please Upload a Document</b>
<form id = "UploadExcelForm" name ="UploadExcelForm" action="<%=uploadWorkbook%>" method="post" enctype="multipart/form-data">
<input type="file" id="uploadedFile" name="uploadedFile" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel">
<button type="submit"> Upload </button>
</form>
AJAX часть,
$("#UploadExcelForm").on('submit', (function(e) {
if ($('#uploadedFile').val().trim().length == 0) {
alert("Please choose a file!");
return false;
}else{
$.ajax({
url: uploadWorkbook,
type: 'POST',
cache: false,
data: $('#UploadExcelForm').serialize(),
processData: false,
contentType: false,
success: function(){}
})
e.preventDefault();
}
}));
внутренняя часть (как получить загруженный файл)
public void uploadWorkbook(ActionRequest actionRequest,ActionResponse actionResponse) throws Exception{
boolean submit = true;
boolean success = false;
UploadPortletRequest uploadPortletRequest = PortalUtil.getUploadPortletRequest(actionRequest);
String uploadedTemplateId = uploadPortletRequest.getParameter("templateId");
File uploadedFile = uploadPortletRequest.getFile("uploadedFile", true);
//to do sth on file...
}