1. 程式人生 > >spring MVC非同步上傳

spring MVC非同步上傳

spring NVC 非同步上傳的簡單例項,原理省略,直接上程式碼。

1.html程式碼:

        

<form id="myform" enctype="multipart/form-data">
   					賬號:<input type="text" name="username"/><br/><br/>
   					密碼:<input type="text" name="password"/><br/><br/>
   					姓名:<input type="text" name="name"/><br/><br/>
   					年齡:<input type="text" name="age"/><br/><br/>
   					頭像:<input type="file" name="file"/><br/><br/>
   					<input type="button" value="註冊" onclick="zhuce()"/>
</form>

2.js程式碼:

    首先需要jquery1.8.3.min.js 和 jquery.form.js 

      

<script src="<%=basePath%>js/jquery1.8.3.min.js" type="text/javascript" charset="utf-8"></script>
<script src="<%=basePath%>js/jquery.form.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
			function zhuce(){
				var form = new FormData(document.getElementById("myform"));
				$.ajax({
					type:'post',
					url:'test/zhuce',
					data:form,
					contentType: false,  
					processData:false,
					success: function(d){
						alert(d);
						window.location.href=window.location.href;
					}
				
				});
			
			}
	
</script>


3.spring MVC配置檔案:

    

<bean id="multipartResolver"  
		        class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
		        <!-- 預設編碼 -->
		        <property name="defaultEncoding" value="utf-8" />  
		        <!-- 檔案大小最大值 -->
		        <property name="maxUploadSize" value="10485760000" />  
		        <!-- 記憶體中的最大值 -->
		        <property name="maxInMemorySize" value="40960" />  
</bean>


4.服務端 java程式碼:

/**
  * @param response
  * @param student
  * @throws IOException 
  */
@RequestMapping("zhuce")
public void zhuce(HttpServletRequest request,HttpServletResponse response,Student student, @RequestParam("file") MultipartFile file) throws IOException{
		response.setCharacterEncoding("UTF-8");
		response.setContentType("html/text,charset=UTF-8");
		PrintWriter out=response.getWriter();
		/*判斷賬號是否存在*/
		List<Student> listStudent=service.findStudentByUserName(student.getUsername());
		if(!listStudent.isEmpty()){
			out.print("該賬號已經存在");
			return;
		}
		
		/*圖片上傳*/
		
		//獲取完整的檔名
		String name=file.getOriginalFilename();
		//獲取最後一個'.'的下角標
		int i = name.lastIndexOf(".");	   
		//獲取字尾。獲取'.'後面的字串 substring(某下角標):擷取該下角標到最後的字串
		String str =name.substring(i);
		//在擷取後的字串前加上時間戳,以保證字串的唯一性。	                     
		String saveName= new Date().getTime()+"";
		//獲取專案的絕對路徑
		String path=request.getSession().getServletContext().getRealPath("/");
		//通過要上傳的路徑,來建立file物件
		File dir = new File(path + "img");
		//判斷該資料夾是否存在,若不存在則建立資料夾
		if(!dir.exists()){		
		     dir.mkdirs();
		}
		//通過上傳的路徑和檔案(圖片名稱),建立file物件。
		File files = new File(dir,saveName+str);
		try {
		     file.transferTo(files);//在指定路徑,建立該圖片檔案	
		} catch (Exception e) {
		          e.printStackTrace();
		}
		
		
		/*存入資料庫*/
		student.setTouxiang("img/"+saveName+str);
		int a=service.addStudent(student);
		if(a>0){
			out.print("註冊成功");
		}else{
			out.print("註冊失敗");
		}
		
   }