SpringMvc -上傳文件

第一次做項目,做一個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";
    }

管理系統頁面展現結果:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章