1. 程式人生 > >SpringMVC form表單 上傳一個檔案

SpringMVC form表單 上傳一個檔案

前臺.jsp檔案

<body>

 <!--第一步:引入.js檔案 ajaxSubmit需要jquery.form.js-->
    <script type="text/javascript"
    src="<%=basePath%>/resources/js/jquery.min.js"></script>
<script type="text/javascript"
    src="<%=basePath%>/resources/js/jquery.validate.min.js"></script>
<script
type="text/javascript" src="<%=basePath%>/resources/js/jquery.form.js">
</script> <!--第二步 新增表單區域開始:enctype="multipart/form-data" --> <form id="createForm" enctype="multipart/form-data"> <ul> <li><label>標題:</label> <input type
="text" class="input-box" placeholder="請輸入標題" name="title">
</li> <li><label>內容:</label> <textarea class="textarea-box" name="content"></textarea></li> <li><label>上傳附件:</label> <input
type="file" class="img-btn" name="file">
</li> <!-- 點選儲存按鈕提交form --> <li><input type="submit" class="btn save-btn" value="儲存"> </li> </ul> </form> <!--新增表單區域結束--> </body> <script> $("#createForm").validate({ //做表單驗證 //驗證成功後提交引數 submitHandler : function(form) { ajaxSubmit(); } }); function ajaxSubmit() { /*用ajaxSubmit()方法提交檔案*/ $("#createForm").ajaxSubmit({ type : 'post', url : "emergencyNotice/create", error : function() {//請求失敗處理函式 alert("失敗"); }, success : function(data) { //請求成功後處理函式。 alert("成功"); } }); }; </script>

後臺控制器.java檔案

import java.io.IOException;
import javax.servlet.http.HttpSession;
import org.springframework.web.multipart.MultipartFile;

import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@ResponseBody
@RequiresPermissions("emergencyNotice:create")
@RequestMapping("/emergencyNotice/create")
public void createEmergencyNotice(EmergencyNotice emergencyNotice, MultipartFile file,
        HttpSession session) throws IOException {

     /*1處理實體類物件emergencyNotice,省略*/

     /*2處理檔案*/
    String basePath = session.getServletContext().getRealPath("/"); // 獲取基本路徑

    /*如果檔案不為空,儲存檔案*/ 
    if (file != null && !file.isEmpty()) {
       String urlPath = HandleFile.saveFile(file, basePath); /*儲存附件到本地*/ 

     } /*end if*/
}

這篇文章把提交檔案和提交一個實體類(基本型別)放在了一起,但是對實體類的處理,省略了。想提醒一下:檔案是可以和實體類(基本型別)一起提交到後臺

這樣提交,無論前臺有沒有提交檔案,都不會出錯的