SpringMVC基础解析之文件上传和下载

1.文件下载

 使用ResponseEntity实现下载文件的功能

页面

下载1.jpg

控制器方法

 @RequestMapping("/testDownload")
        public ResponseEntity testResponseEntity(HttpSession session) throws IOException {
            //1.获取ServletContext对象
            ServletContext servletContext = session.getServletContext();
            //2.获取服务器中文件的真是路径
            String realPath = servletContext.getRealPath("/static/img/1.jpg");
            System.out.println("文件真实路径:"+realPath);
            //3.创建输入流
            InputStream is = new FileInputStream(realPath);
            //4.创建字节数组
            byte[] bytes = new byte[is.available()];
            //5.将流读取到字节数组中
            is.read(bytes);
            //6.创建HttpHeaders对象设置响应头信息
            MultiValueMap headers = new HttpHeaders();
            //7.设置要下载的方式以及下载文件名
            headers.add("Content-Disposition", "attachment;filename=1.jpg");
            //8.设置响应状态码
            HttpStatus statusCode = HttpStatus.OK;
            //9.创建ResponseEntity对象
            ResponseEntity responseEntity = new ResponseEntity<>(bytes,headers,statusCode);
            //10.关闭资源
            is.close();
            return responseEntity;
        }

2.文件上传

 文件上传要求form表单的请求方式必须为post,并且添加属性enctype="multipart/form-data"
        SpringMVC中将上传的文件封装到MultipartFile对象中,通过此对象可以获取文件相关信息

 1.添加依赖

  
            
                commons-fileupload
                commons-fileupload
                1.3.1
            

 2.在SpringMVC的配置文件中添加配置

  
            

3.页面

  
图片:

4.控制器方法

  @RequestMapping("/testUpload")
                public String testUpload(MultipartFile photo, HttpSession session) throws IOException{
                    //1.获取上传文件的文件名
                    String fileName = photo.getOriginalFilename();
                    //2.获取上传文件的后缀名
                    String suffixName = fileName.substring(fileName.lastIndexOf("."));
                    //3.将UUID作为文件名
                    String uuid = UUID.randomUUID().toString().replaceAll("-","");
                    //4.将uuid和后缀名拼接后作为最终的文件名
                    fileName = uuid+suffixName;
                    //5.通过ServletContext获取服务器中photo目录的路径
                    ServletContext servletContext = session.getServletContext();
                    String photoPath = servletContext.getRealPath("photo");
                    File file = new File(photoPath);
                    //6.判断该photoPath路径是否存在
                    if(!file.exists()){
                        file.mkdir();
                    }
                    String finalPath = photoPath+File.separator+fileName;
                    //上传文件
                    photo.transferTo(new File(finalPath));
                    return "success";
                }

你可能感兴趣的:(html,servlet,struts)