一、MultipartFile上傳文件
1.配置文件
<!-- 配置MultipartResolver 用於文件上傳 使用spring的CommosMultipartResolver -->
<bean id="multipartResolver"
<span style="white-space:pre"> </span>class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<span style="white-space:pre"> </span><property name="defaultEncoding">
<span style="white-space:pre"> </span><value>UTF-8</value>
<span style="white-space:pre"> </span></property>
<span style="white-space:pre"> </span><property name="maxUploadSize">
<span style="white-space:pre"> </span><!-- 上傳文件大小限制爲31M,31*1024*1024 -->
<span style="white-space:pre"> </span><value>32505856</value>
<span style="white-space:pre"> </span></property>
<span style="white-space:pre"> </span><property name="maxInMemorySize">
<span style="white-space:pre"> </span><value>4096</value>
<span style="white-space:pre"> </span></property><pre name="code" class="java"><span> </span><property name="uploadTempDir">
<span> </span><value>fileUpload/temp</value>
<span> </span></property>
</bean> defaultEncoding:請求的編碼格式,默認爲ios-8859-1
maxUploadSize:上傳文件的大小,單位爲byte
uploadTempDir:上傳文件的臨時路徑、
2.上傳表單
記得在form標籤中加入enctype="multipart/form-data"表示表單是要處理文件的
3.上傳控制類
//通過Spring的autowired註解獲取spring默認配置的request
@Autowired
private HttpServletRequest request;
/***
* 上傳文件 用@RequestParam註解來指定表單上的file爲MultipartFile
*
* @param file
* @return
*/
@RequestMapping("fileUpload")
public String fileUpload(@RequestParam("file") MultipartFile file) {
// 判斷文件是否爲空
if (!file.isEmpty()) {
try {
<span style="white-space:pre"> </span>String fileName = file.getOriginalFilename();
<span style="white-space:pre"> </span>//path爲String,即用戶想指定的保存路徑
<span style="white-space:pre"> </span>File targetFile = new File(path, fileName);
<span style="white-space:pre"> </span>if(!targetFile.exists()){
<span style="white-space:pre"> </span>targetFile.mkdirs();
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>file.transferTo(targetFile);
// 第二種方式:文件保存路徑
//String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/"
+ file.getOriginalFilename();
// 轉存文件
//file.transferTo(new File(filePath));
} catch (Exception e) {
e.printStackTrace();
}
}
// 重定向
return "redirect:/list.html";
}
/***
* 讀取上傳文件中得所有文件並返回
*
* @return
*/
@RequestMapping("list")
public ModelAndView list() {
String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/";
ModelAndView mav = new ModelAndView("list");
File uploadDest = new File(filePath);
String[] fileNames = uploadDest.list();
for (int i = 0; i < fileNames.length; i++) {
//打印出文件名
System.out.println(fileNames[i]);
}
return mav;
}
4.常用方法
String getContenType():獲取文件MIME類型
InputStream getInputStream():獲取文件流
String getName():獲取表單中文件組件的名字
String getOriginalFileName():獲取上傳文件的原名
long getSize():獲取文件字節大小,單位byte
boolean isEmpty():是否爲空
void transferTo(File dest):保存到一個目標中
二、@RequestMapping
參考:http://blog.csdn.net/kobejayandy/article/details/12690041
1.簡介
RequestMapping是一個用來處理請求地址映射的註解,可用於類或方法上。用於類上,表示類中的所有響應請求的方法都是以該地址作爲父路徑。
2.有六個屬性:
1)value、method
value:指定請求的實際地址,指定的地址可以是URI Template模式
method:指定請求的method類型,GET、POST、PUT、DELETE等
value的uri值可爲以下三類:
A)普通的具體值;
@RequestMapping(value="/add",method=RequestMethod.POST)
@ResponseBody
public Map add(SysMenu obj){
Map map=new HashMap();
return map;
}
B)含有某變量的一類值;
- @RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)
- public String findOwner(@PathVariable String ownerId, Model model) {
- Owner owner = ownerService.findOwner(ownerId);
- model.addAttribute("owner", owner);
- return "displayOwner";
- }
C)含有正則表達式的一類值;
- @RequestMapping("/spring-web/{symbolicName:[a-z-]+}-{version:\d\.\d\.\d}.{extension:\.[a-z]}")
- public void handle(@PathVariable String version, @PathVariable String extension) {
- // ...
- }
- }
2)consumes、produces、params、headers