前言:項目中有這樣的需求,多個功能公用一個頁面,如添加“添加景區”,“添加派出所”,“添加醫院”,“添加學校”等都公用一個頁面,公用一個form表單,在添加信息時它們都公用一個方法。
問題:問題在於“添加景區”功能中有一個上傳圖片文件的功能而其餘的功能則沒有上傳文件的需要。之前我們是在方法中聲明:@RequestParam("imageFile") MultipartFile imageFile,現在如果還在這樣做的話當沒有文件上傳時就會有異常了。找到了問題就想辦法解決問題。
解決辦法:思想是我們先判斷一下,是否有文件上傳,如果沒有文件上傳就用以前的表單,如果有文件上傳就採用如下做法:
public String save(EnterpriseBusiness enterpriseBusiness, HttpServletRequest request) {
//@RequestParam("imageFile") MultipartFile imageFile,
// 創建一個通用的多部分解析器.
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
// 設置編碼
commonsMultipartResolver.setDefaultEncoding("utf-8");
// 判斷是否有文件上傳
if (commonsMultipartResolver.isMultipart(request)) {//有文件上傳
//將request變成多部分request
MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;
//獲取multiRequest 中所有的文件名
Iterator<String> iter=multiRequest.getFileNames();
while (iter.hasNext()) {
MultipartFile imageFile = multiRequest.getFile(iter.next().toString());//(String) iter.next()
到此爲止就相當於回到了:
@RequestParam("imageFile") MultipartFile imageFile,
緊接着你就可以做文件上傳的相關操作了。對於以上的代碼,備註的很清楚。如有不明白歡迎留言,或者加我的QQ:416404891
晚安!