Spring MVCのファイルアップロードとダウンロード

4315 ワード

「君は一葉の舟を見て、出没騒ぎの中で」Spring MVCを使ってファイルのアップロードとダウンロードを行います.Spring MVCのjarバッグのほかに、commons-fileuload-1.2.jar、comons-to-2.11.jarの2つのカバンを使います.ここではダウンロードアドレスが提供されています.
  • ファイルにアップロードされたjspページ:PS:ここで注意してください.formタグには、属性があります.enctype="multipart/form-data"、アップロード機能を使うには、この属性が必要です.
  • 
    
    
    
            
    
    
    

  • Spring MVCの構成:
  •     
            
            
                10485760
            
            
            
                UTF-8
            
        
    
  • Userエンティティクラス:
  • import org.springframework.web.multipart.MultipartFile;
    
    import java.io.Serializable;
    
    /**
     * @author aRunner
     * @date 2018/10/27
     */
    public class User implements Serializable {
        private String username;
        private MultipartFile image;
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public MultipartFile getImage() {
            return image;
        }
    
        public void setImage(MultipartFile image) {
            this.image = image;
        }
    }
    
    
  • アップロードファイルのControllerコードを処理する:
  • //          MultipartFile 
        @RequestMapping(value = "/register")
        public String register(HttpServletRequest request, @ModelAttribute User user,Model model) throws Exception{
            System.out.println(user.getUsername());
            //       ,      
            if (!user.getImage().isEmpty()) {
                //      
                String path = request.getServletContext().getRealPath("/images/");
                //     
                String filename = user.getImage().getOriginalFilename();
                File filepath = new File(path, filename);
                //        ,          
                if (!filepath.isDirectory()) {
                    filepath.getParentFile().mkdir();
                }
                //                
                user.getImage().transferTo(new File(path + File.separator + filename));
                //      model
                model.addAttribute("user",user);
                //       
                return "userInfo";
            }else {
                return "error";
            }
        }
    
    
  • アップロードが成功したら、ダウンロードを提供するページにジャンプします.
  • 
    
    
    
              
    
    
    

    ${request Scrope.user.marge.origginame}
  • ダウンロード要求のControllerコードを処理する:
  •     //          MultipartFile 
        @RequestMapping(value = "/download")
        public ResponseEntity download(HttpServletRequest request,
                                               @RequestParam("filename") String filename, Model model) throws Exception{
            //      
            String path = request.getServletContext().getRealPath("/images/");
            File file = new File(path + File.separator + filename);
            HttpHeaders headers = new HttpHeaders();
            //        ,          
            String downloadFileName = new String(filename.getBytes("UTF-8"), "ISO-8859-1");
            //      attachment(    )    
            headers.setContentDispositionFormData("attachment",downloadFileName);
            //application/octet-stream:      (        )
            headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
            //201HttpStatus.CREATED
            return new ResponseEntity(FileUtils.readFileToByteArray(file),headers,HttpStatus.CREATED);
        }