SpringMVC經典系列-12基於SpringMVC的檔案上傳---【LinusZhu】

來源:互聯網
上載者:User

      注意:此文章是個人原創,希望有轉載需要的朋友們標明文章出處,如果各位朋友們覺得寫的還好,就給個贊哈,你的鼓勵是我創作的最大動力,LinusZhu在此表示十分感謝,當然文章中如有紕漏,請聯絡linuszhu@163.com,敬請朋友們斧正,謝謝。

      不知不覺已經把Spring的基礎部分講解完了,所講述的都是在項目中經常用到的東西,是經得住考驗的,接下來的部分主要是要講述使用SpringMVC進行的檔案上傳、處理Ajax請求、自訂攔截器功能的實現,不多說了,首先講解檔案上傳部分,開始……

      主要步驟如下:

1. 需要使用apache-commons下得上傳組件,需要引入兩個jar包:

apache-commons-fileupload.jar、apache-commons-io.jar

2.  在Springmvc-servlet.xml設定檔中,增加CommonsMultipartResoler配置,如下:

<bean id="multipartResolver"  

    class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >  

    <property name="defaultEncoding" value="gbk"/> <!-- 預設編碼 (ISO-8859-1) -->  

    <property name="maxInMemorySize" value="10240"/> <!-- 最大記憶體大小 (10240)-->  

    <property name="uploadTempDir" value="/upload/"/> <!-- 檔案暫存地址,不是最終的檔案目錄 -->  

    <property name="maxUploadSize" value="-1"/> <!-- 最大檔案大小,-1為無限止(-1) -->  

</bean>

3.建立upload.jsp頁面,內容如下:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>SpringMVC檔案上傳</title>

</head>

<body bgcolor="#d6e3f6">

<form action="upload.do" method="post" enctype="multipart/form-data">

<input type="file" name="file" />

<br/><input type="submit" />

</form>

</body>

</html>

4. 建立控制器,代碼如下:

package  com.spring.controller;

import java.io.File;

import java.util.Date;

import javax.servlet.ServletContext;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.context.ServletContextAware;

import org.springframework.web.multipart.commons.CommonsMultipartFile;

@Controller

public  class  FileUploadController  implements  ServletContextAware {

private ServletContext servletContext;

@Override

public void setServletContext(ServletContext context) {

this.servletContext  = context;

}

//@RequestParam("file")一定要有

@RequestMapping(value="/upload.do")

public  String handleUploadData(@RequestParam("file")  CommonsMultipartFile file){

if (!file.isEmpty()) {

             //擷取本機存放區路徑

   String path = this.servletContext.getRealPath("/uploadFile/");        System.out.println(path);

   String fileName = file.getOriginalFilename();

   String fileType = fileName.substring(fileName.lastIndexOf("."));

   System.out.println(fileType); 

             //建立一個檔案

   File file2 = new File(path,new Date().getTime() + fileType);     try {

                  //將上傳的檔案寫入建立的檔案中

    file.getFileItem().write(file2);

   } catch (Exception e) {

    e.printStackTrace();

                  return "redirect:upload_error.jsp";

   }

   return "redirect:upload_ok.jsp";

}else{

return "redirect:upload_error.jsp";

}

}

}

5. 建立upload_ok.jsp頁面

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

  </head>

  <body>

   <h1>上傳檔案成功</h1>

  </body>

</html>

 6. 建立upload_error.jsp頁面

  <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

  </head>

  <body>

   <h1>上傳檔案失敗</h1>

  </body>

</html>

 7. 項目運行測試:

輸入地址:http://localhost:8081/SpringMVC02/upload.jsp ,選擇要上傳檔案,如下:

 

點擊提交,上傳成功返回成功介面:

進入項目發布後的上傳檔案路徑(uploadFile檔案夾下面),會發現上傳的檔案,如下:

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.