java 用ajaxFileUpload上傳檔案到指定目錄
阿新 • • 發佈:2019-02-14
這是 一個上傳檔案到指定目錄的功能。對於頁面長相上沒什麼好說的,很醜的啦,但是這個上傳的功能我想為大家分享下,用的是uploadfile 和springmvc。
1.引入檔案:
<script type="text/javascript" src="<c:url value="/lib/jquery/jquery.min.js"/>"></script>
<script src="<c:url value="/js/page_js/uploadfile.js"/>"></script>
2.頁面元素:
<div style="padding:10px; margin:10px; border: 1px solid #5bc0de; border-radius:5px"> <b style="color:#333; font-size:14px;"> 選擇上傳檔案: </b> <input type="file" id="URL_1" name="URL_1" style=" display: inline-block;"> </div>
3.js
$(document).ready(function() { $("#URL_1").on("change", function() { // var userid=$("#user_id",window.parent.document).val(); var filePath = $("#URL_1").val(); // filepathVAL(filePath); ajaxupload('URL_1'); }); }); function filepathVAL(filePath) { if (filePath == null || filePath == "") { alert("您未選擇要上傳的檔案!"); return false; } var index = filePath.lastIndexOf("."); var fileExt = filePath.substring(index + 1); var picture = [ "png", "gif", "bmp", "jpg", "jpeg" ]; for ( var i in picture) { if (fileExt.toLowerCase() != picture[i]) { if (i != picture.length - 1) { continue; } alert("您上傳的不是圖片請重新選擇!"); return false; } else { break; } } } function ajaxupload(fileElementId) { $.ajaxFileUpload({ url : '<c:url value="/manage/upload.do"/>?fileElementId=' + fileElementId + '&code=${code}', secureuri : false, fileElementId : fileElementId, // 檔案選擇框的id屬性 dataType : 'json', // 伺服器返回的格式型別 type : 'post', success : function(data, status) // 成功 { if (data.flag == "success") { alert("上傳成功"); $.fn.ulynlist.refresh($("#ulyn-table-id")); } else { layer.alert("上傳失敗"); } }, error : function(data, status, e) // 異常 { layer.alert(data.flag + " " + status); layer.alert("出錯了,請重新上傳!"); } }); }
4.java部分
@RequestMapping(value = "/upload.do", method = RequestMethod.POST) public void uploadQuestionPic(String fileElementId,HttpServletRequest request, HttpServletResponse response) throws Exception { ManageService manageService = (ManageService)ServiceLocator.getBeanByClass(ManageService.class); String code = request.getParameter("code"); JSONObject resultObj = new JSONObject(); try { String saveDir = manageService.queryIMG(code); if (!StringUtils.isBlank(saveDir)) { resultObj = uploadFiles(fileElementId, saveDir, request); String savaFileName = resultObj.getString("newFileName"); manageService.saveFileLogs(code,savaFileName);//儲存檔案日誌 }else { resultObj.put("flag", "上傳出錯啦,沒有查詢到檔案儲存路徑"); } // String saveDir = "D:\\test"; // resultObj = uploadFiles(fileElementId, saveDir, request); //{"flag":"success","newFileName":"1449054407024---王力巨集002.jpg"} //寫日誌 TODO something.... } catch (Exception e) { } finally{ response.setContentType("text/html"); response.getWriter().write(resultObj.toJSONString()); } }
/**
* 檔案儲存
* @param fileElementId 檔案選擇框的id屬性
* @param saveDir 檔案儲存的絕對路徑
* @param request
* @return JSONObject
*/
private JSONObject uploadFiles(String fileElementId, String saveDir,HttpServletRequest request){
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
JSONObject resultObj = new JSONObject();
/**得到圖片儲存目錄的真實路徑**/
String logoRealPathDir = saveDir;// String saveDir = "D:\\test";
/**根據真實路徑建立目錄**/
File logoSaveFile = new File(logoRealPathDir);
if(!logoSaveFile.exists()){
logoSaveFile.mkdirs();
}
/**頁面控制元件的檔案流**/
MultipartFile multipartFile = multipartRequest.getFile(fileElementId);
/**獲取檔案的字尾**/
String filenameString = multipartFile.getOriginalFilename();
System.out.println(filenameString);
String suffix = multipartFile.getOriginalFilename().substring
(multipartFile.getOriginalFilename().lastIndexOf("."));
/**拼成完整的檔案儲存路徑加檔案**/
String name = + System.currentTimeMillis()+"---"+filenameString;//suffix;
String fileName = logoRealPathDir + File.separator+name;
File file = new File(fileName);
String data = file.getPath();
try {
multipartFile.transferTo(file);
resultObj.put("flag", "success");
resultObj.put("newFileName", name);
} catch (IllegalStateException e) {
e.printStackTrace();
resultObj.put("flag", "上傳出錯啦,檔案路徑不對");
} catch (IOException e) {
e.printStackTrace();
resultObj.put("flag", "上傳出錯啦,檔案路徑不對");
}
return resultObj;
}
好啦,完啦,就這麼點程式碼,上傳檔案功能就完成了。總結下
==============================================================================================================================
==============================================================================================================================
==============================================================================================================================