這裏介紹一下jsp的文件上傳,前臺使用jquery插件ajaxfileupload.js,後臺使用MultipartFile
這個也沒有什麼好介紹的,看一下代碼:
html代碼:
<div id="upload" class="upload_div" >
<input type="file" id="file" name="file" />
<input type="button" id="upload" value="上傳文件" οnclick="fileUpload()" >
<input type="button" id="cancelBtn" value="取消" οnclick="uploadCancel()" />
</div>
js代碼:
function fileUpload() {
var fileValue = $("#file").val();
if (fileValue == null || fileValue == "" || fileValue == 'undefine') {
alert("請選擇文件");
return;
}
$.ajaxFileUpload({
url : '/officeofriver/v1/supervisionPerson/upload?uuid=' + userUuid,
secureuri : false,
fileElementId : 'file',
dataType : 'text',
success : function(data) {
$("#hiddenDivId").css("display", "none");
$("#upload").css("display", "none");
$("#file").val("");
alert(data);
},
error : function() {
}
});
}
java代碼:
@RequestMapping("/upload")
@ResponseBody
public Map<String, Object> fileUpload(@RequestParam(value = "file", required = false) MultipartFile file,
HttpServletRequest request, HttpServletResponse response) throws Exception {
String path = request.getSession().getServletContext().getRealPath("upload");
String fileName = file.getOriginalFilename();
File targetFile = new File(path, fileName);
String uuid = request.getParameter("uuid");
// 設置文件保存的路徑 提供給後面的解析使用
request.getSession().setAttribute("fileNameSpare", fileName);
request.getSession().setAttribute("filePathSpare", path);
try {
file.transferTo(targetFile);
} catch (Exception e) {
logger.error(e.getMessage());
}
Map<String, Object> resultMap = supervisePersonService.parseExcel(path + File.separator + fileName, uuid);
@SuppressWarnings("unchecked")
Map<String, Object> errorRows = (Map<String, Object>) resultMap.get("errorRows");
return errorRows;
}
一個文件上傳就搞定了。