ssm 프레임 워 크 Springmvc 파일 업로드 구현 코드 상세 설명

1.업로드:
1)프론트 파일 업로드 폼 을 작성 합 니 다.Method 는 post 이 어야 합 니 다.enctype 은 mutipat/form-data 입 니 다.

<body>
<%--    
   1)method     post
   2)enctype     multipart/form-data
--%>
<h1>    </h1>
<form action="${pageContext.request.contextPath}/admin/headpic" method="post" enctype="multipart/form-data">
      :<input type="file" name="headpic"/>
<%--  ${param.   }==request.getParameter(   )--%>
  <input type="text" name="id" value="${param.id}">
  <input type="submit" value="  "/>
</form>
</body>
2)제어 층 코드 를 작성 하여 업로드 한 파일 데 이 터 를 가 져 오고 MultipartFile 을 저장 합 니 다.

//MultipartFile:         ,    input name  
  //@SessionAttribute("admin"):  session    
  //@RequestParam(required = false):           ,      
  @RequestMapping("/headpic")
  public String headPic(MultipartFile headpic,@RequestParam(required = false) Admin admin,Integer id) throws IOException {
    String filename = headpic.getOriginalFilename();
    System.out.println("      :"+filename);
    File file=new File("E:/headpic/"+filename);
    if (!file.getParentFile().exists()){
      file.getParentFile().mkdirs();//        ,     
    }
    //    ,          file
    headpic.transferTo(file);
    admin=new Admin(id);
    //             
    admin.setHeadpic("/head/"+filename);
    //        
    adminService.updateHeadPic(admin);
    return "redirect:list";
  }
3)springmvc 프로필 에 파일 업로드 설정 항목 을 설정 합 니 다.multipartResolver 설정 하기;

  <!--      -->
  <bean id="multipartResolver"
     class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!--        -->
    <property name="defaultEncoding" value="UTF-8"/>
    <!--        -->
    <property name="maxUploadSize" value="10240000" />
  </bean>
<!--      ,                    
   mapping:      ; location:      
       :/head/logo.png==>E:/headpic/logo.png
-->
  <mvc:resources mapping="/head/**" location="file:E:/headpic/"></mvc:resources>
<!--       /headimg/logo.png==>/WEB-INF/img/logo.png-->
  <mvc:resources mapping="/headimg/**" location="/WEB-INF/img/"></mvc:resources>
2.다운로드:
1)파일 을 다운로드 하 는 경 로 를 가 져 옵 니 다.
2)바이트 배열 로 파일 내용 읽 기;
3)바이트 배열 을 되 돌려 주 고 반환 형식 을 stream 이 라 고 설명 하 며 첨부 파일 이름 을 설정 합 니 다.

@GetMapping("/headPicDownload")
  public ResponseEntity<byte[]> headPicDownload(String filename) throws IOException {
    //1、       
    File file=new File("E:/headpic/"+filename);
    //2、      
    byte[] bytes= FileUtils.readFileToByteArray(file);
    //3、  http   
    HttpHeaders headers = new HttpHeaders();
    //  ContentType stream
    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    //4、         
    headers.setContentDispositionFormData("attachment",filename);
    //                          http   
    return new ResponseEntity<byte[]>(bytes,headers, HttpStatus.CREATED);
  }

<td>
        <img style="width: 25px;height: 25px;border-radius: 50%;"
           src="${pageContext.request.contextPath}${admin.headpic}"/>
        <a href="${pageContext.request.contextPath}/admin/headPicDownload?filename=${fn:replace(admin.headpic," rel="external nofollow" /head/","" )}">  </a>
      </td>
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기