SpringMVC学习总结五、文件上传与下载

目录

1、SpringMVC框架部署

2、文件上传 

2.1、前端提交文件

2.2、控制器接收数据和文件 

3、文件下载 

3.1、实现文件下载 

1、SpringMVC框架部署

  • 基于Maven创建web工程
  • 添加SpringMVC所需的依赖
    • Spring-context aspects jdbc test web webmvc jackson
  • 创建SpringMVC配置文件
  • 在web.xml中配置SpringMVC的前端控制器
  • 在web.xml中配置SpringMVC的编码过滤器
  • 配置静态资源处理策略

2、文件上传 

案例:添加图书,同时提交图书的封面图片

2.1、前端提交文件

  • 表单提交方式必须为post
  • 表单 enctype属性 设置为 multipart/form-data

    图书名称:

    图书作者:

    图书价格:

    图书封面:

    提交:

2.2、控制器接收数据和文件 

SpringMVC处理上传文件需要借助CommonsMultipartResolver文件解析器

SpringMVC学习总结五、文件上传与下载_第1张图片

  • 添加依赖:commons-io commons-fileupload
    
    
        commons-io
        commons-io
        2.4
    
    
    
    
        commons-fileupload
        commons-fileupload
        1.3.1
    

  • 在spring-servlet.xml中配置文件解析器
    
        
        
        
        
    

  • 控制器接收文件
    • 在处理文件上传的方法中定义一个 MultipartFile 类型的对象,就可以接收图片了
      import org.springframework.http.HttpRequest;
      import org.springframework.stereotype.Controller;
      import org.springframework.web.bind.annotation.RequestMapping;
      import org.springframework.web.multipart.MultipartFile;
      
      import javax.servlet.http.HttpServletRequest;
      import java.io.File;
      import java.io.IOException;
      
      @Controller
      @RequestMapping("/book")
      public class BookController {
      
          @RequestMapping("/add")
          public String addBook(Book book, MultipartFile ImgFile, HttpServletRequest request) throws IOException {
              System.out.println("~~~~addBook");
              System.out.println(book);
              System.out.println(ImgFile);
              //ImgFile表示上传的图片
              //1:截取上传文件的后缀名,生成新的文件名
              String originalFilename = ImgFile.getOriginalFilename();
              String ext = originalFilename.substring( originalFilename.lastIndexOf(".") );// .jpg
              String filename = System.currentTimeMillis()+ext;
      
              //2:获取imgs目录在服务器的路径
              String dir = request.getServletContext().getRealPath("imgs");
              String savePath = dir + "/" + filename;//存储路径(C:/asd/ad/asdf/img.jpg)
      
              //3:保存文件
              ImgFile.transferTo(new File(savePath));
      
              //4:将图片的访问路径设置到对象
              book.setBookImg("imgs/"+ filename);
      
              //5:调用service保存book到数据库
      
              return "/tips.jsp";
          }
      
      }

3、文件下载 

 SpringMVC学习总结五、文件上传与下载_第2张图片

@RequestMapping("/list")
@ResponseBody
public String[] listImgs(HttpServletRequest request){
    //1:从imgs目录下获取所有的图片信息
    String dir = request.getServletContext().getRealPath("imgs");
    File imgDir = new File(dir);
    String[] filenames = imgDir.list();
    return filenames;
}

3.1、实现文件下载 

 SpringMVC学习总结五、文件上传与下载_第3张图片

你可能感兴趣的:(SpringMVC,学习,spring,java)