SpringMVC實現文件上傳

1.文件上傳的前提

  1. 需要導包: commons-fileupload.jar, commons-io.jar
  2. 需要提供上傳文件的表單域: <input type=”file”name=”” />
  3. 表單的提交方式必須是post方式
  4. 表單的enctype屬性必須是multipart/form-data

2.使用SpringMVC進行文件上傳

     除了上述要求以外, 需要配置文件上傳解析器(多部件解析器). 如果配置了多部件解析器, 那麼, 在控制器方法中, 就可以通過MultipartFile對象來接收到上傳的文件.

<!--多部件解析器, 文件上傳, 底層依賴commons-fileupload.jar-->
<!--id必須是multipartResolver, 別的無效-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
@Controller
public class DemoController {
    @PostMapping("/upload")
    public String upload(MultipartFile photo, String username, HttpServletRequest req) throws Exception {
        /*System.out.println("isEmpty: " + photo.isEmpty());
        System.out.println("originalFilename: " + photo.getOriginalFilename());
        System.out.println("表單域的name屬性: " + photo.getName());
        System.out.println("文件的MIME類型: " + photo.getContentType());
        System.out.println("文件的大小: " + photo.getSize());*/
        // 定位存儲路徑
        File dir = new File(req.getServletContext().getRealPath("/upload"));
        // 沒有就創建
        if(!dir.exists()) {
            dir.mkdirs();
        }
        // 重新生成文件的名稱: 時間戳, uuid
        String oname = photo.getOriginalFilename();
        String name = UUID.randomUUID().toString() +
                oname.substring(oname.lastIndexOf("."));
        // 定位文件
        File file = new File(dir, name);
        // 完成文件的上傳
        photo.transferTo(file);
        return "forward:/index.jsp";
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章