第一次做項目,做一個app的後臺管理系統,這兩天遇到了後臺要上傳選手信息,因此自己對整個上傳文件的功能做了瞭解,並且記錄下學習的過程;
1、上傳文件功能需要用到兩個包:commons-fileupload(文件上傳)和commons-io(io)
在pox.xml導入兩個依賴包:
2、spring-mvc配置文件中配置MultipartResolver處理器,並可在此加入對上傳文件的屬性限制 ,或者異常信息,我這裏只配置了處理器和上傳文件的限制:
3、編寫了controller類進行測試了下
package com.ykw.springmvc.controller;
import java.io.File;
import java.io.IOException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
@Controller
@RequestMapping("upload")
public class UploadController {
/**
* 上傳單個文件
* @param file
* @param desc
* @return
* @throws IllegalStateException
* @throws IOException
*/
@RequestMapping(value = "/one")
public String upload(@RequestParam("file") MultipartFile file , @RequestParam("desc") String desc) throws IllegalStateException, IOException{
//可以將文件轉存到d盤目錄
System.out.println("文件名稱:"+file.getOriginalFilename());
file.transferTo(new File("d:\\"+file.getOriginalFilename()));
return "success";
}
/**
* 上傳多個文件,用數組接收
* @return
*/
@RequestMapping(value ="/many")
public String upload2(@RequestParam MultipartFile[] files , @RequestParam("desc") String desc){
for(MultipartFile file :files){
System.out.println("文件名稱:"+file.getOriginalFilename());
System.out.println("文件尺寸:"+file.getSize());
}
System.out.println(desc);
return "success";
}
}
4、編寫jsp頁面進行上傳文件
這裏要注意enctype要指定,查詢html form標籤:
沒有指定出現的情況:
5、測試結果:
測試了效果後,在項目中應用效果(上傳選手語音、視頻、圖片):
這裏用到了UUID生成全球唯一ID作爲文件名稱
@RequestMapping(value = "audienceadd")
public String addaudience(HttpServletRequest request,
@RequestParam("voice") MultipartFile voice,
@RequestParam("video") MultipartFile video,
@RequestParam("image") MultipartFile image) throws IllegalStateException, IOException {
Audience audience = new Audience();
audience.setOrderId(Integer.parseInt(request.getParameter("orderId")));
audience.setContent(request.getParameter("content"));
audience.setTelephone(request.getParameter("telephone"));
audience.setName(request.getParameter("name"));
String originalFilename = null;
String path = null;
/**
* 判斷語音文件,將文件存入路徑後,把路徑賦值給數據庫
*/
originalFilename = voice.getOriginalFilename();
if (voice != null && originalFilename != null
&& originalFilename.length() > 0) {
path = "F:\\1\\";
String newFileName=UUID.randomUUID()+originalFilename.substring(originalFilename.lastIndexOf("."));
File newFile = new File(path+newFileName);
voice.transferTo(newFile);
audience.setYuying(newFileName);
} else {
audience.setYuying("");
}
/**
* 判斷視頻文件,將文件存入路徑後,把路徑賦值給數據庫
*/
originalFilename = video.getOriginalFilename();
if (video != null && originalFilename != null
&& originalFilename.length() > 0) {
path = "F:\\1\\";
String newFileName=UUID.randomUUID()+originalFilename.substring(originalFilename.lastIndexOf("."));
File newFile = new File(path+newFileName);
video.transferTo(newFile);
audience.setShiping(newFileName);
} else {
audience.setShiping("");
}
/**
* 判斷圖片文件,將文件存入路徑後,把路徑賦值給數據庫
*/
originalFilename = image.getOriginalFilename();
if (image != null && originalFilename != null
&& originalFilename.length() > 0) {
path = "F:\\1\\";
String newFileName=UUID.randomUUID()+originalFilename.substring(originalFilename.lastIndexOf("."));
File newFile = new File(path+newFileName);
image.transferTo(newFile);
audience.setPicture(newFileName);
} else {
audience.setPicture("");
}
audienceSvc.addAudience(audience);
return "redirect:audiencelist.action";
}
管理系統頁面展現結果: