1. 程式人生 > >java 用ajaxFileUpload上傳檔案到指定目錄

java 用ajaxFileUpload上傳檔案到指定目錄

    這是 一個上傳檔案到指定目錄的功能。對於頁面長相上沒什麼好說的,很醜的啦,但是這個上傳的功能我想為大家分享下,用的是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;
    }

好啦,完啦,就這麼點程式碼,上傳檔案功能就完成了。總結下




==============================================================================================================================

==============================================================================================================================

==============================================================================================================================