package com.zzxsoft.controller;
import java.io.File;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.ModelAndView;
/*文件上傳,FileUploadController類
* @ author
* **/
@Controller
@RequestMapping("/file")
public class FileUploadController {
@RequestMapping("/upload")
public ModelAndView upload(HttpServletRequest request) throws Exception {
// 將當前文件初始化給CommonsMutipartResolver (多部分解析器)
int count = 0;
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
// 檢查表單中是否有 enctype="multipart/from-data"
if (multipartResolver.isMultipart(request)) {
// 將request變成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
// 獲取multiRequest中所有的文件域中
Iterator iterator = multiRequest.getFileNames();
// 遍歷所有文件域
while (iterator.hasNext()) {
// 判斷是否有選擇的文件
MultipartFile file = multiRequest.getFile(iterator.next().toString());
// 判斷文件域中是否有選擇的文件
if (file != null && file.getOriginalFilename() != "") {
// 路徑是項目中服務器端的路徑. file.getOriginalFilename()是文件名,包含後綴 .txt
String path = request.getSession().getServletContext().getRealPath("/fileUpload/")
+ file.getOriginalFilename();
System.out.println(path);
// 上傳文件
file.transferTo(new File(path));
count++;
}
}
}
return new ModelAndView("fileUpload", "msg", "成功上傳 " + count + " 個文件");
}
}
/*文件上傳,.jsp頁面
* @ author
* **/
SpringMVC-servlet.xml的配置
<!-- 文件上傳 CommonsMultipartResolver-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 設置文件上傳最大值,注意,這個值是所有文件的大小和 1024*1024*4 = 4 M -->
<property name="maxUploadSize" value="4194304"/>
<!-- 緩衝區大小 -->
<property name="maxInMemorySize" value="4096"/>
<!-- 設置上傳時的字符編碼 -->
<property name="defaultEncoding" value="utf-8"/>
</bean>
上傳前的界面
上傳時的界面
上傳好返回時的界面