spring MVC非同步上傳
阿新 • • 發佈:2018-12-22
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("註冊失敗");
}
}