SpringBoot 사진 업로드 예시

설명:보통 항목 에 그림 이 많 으 면 전문 서버 에 그림 을 올 리 고 업무 코드 가 있 는 서버 에 그림 을 올 리 지 않 습 니 다.아래 의 예 는 단지 기본 적 인 절 차 를 배우 기 위해 서 여기에 두 었 다.
1.한 장의 사진 업로드
1.1 전단 용지 제출
전단 코드:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>
<form method="post" action="/uploads" enctype="multipart/form-data">
 <input type="file" name="files" multiple>
 <input type="submit" value="  ">
</form>
</body>
</html>
백 엔 드 코드;

SimpleDateFormat formatter = new SimpleDateFormat("/yyyy/MM/dd/");
 @RequestMapping("/upload")
 public String fileUpload(MultipartFile file, HttpServletRequest request){
  String time = formatter.format(new Date());
  //              
  String realPath = request.getServletContext().getRealPath("/img") + time;
  File folder = new File(realPath);
  if(!folder.exists())
   folder.mkdirs();

  //           (    )
  String oldName = file.getOriginalFilename();
  String newName = UUID.randomUUID() + oldName.substring(oldName.lastIndexOf("."));

  try {
   //          
   file.transferTo(new File(folder, newName));

   //          URL,     ,        ,      
   String returnUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "/img" + time + newName;
   return returnUrl;
  } catch (IOException e) {
   e.printStackTrace();
  }


  return null;
 }
1.2 전단 은 ajax 로 제출
전단 코드 는 위의 것 과 약간 다 르 고 배경 코드 는 같 습 니 다.

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>

</head>
<body>
 <input type="file" id="file">
 <input type="submit" value="  " onclick="uploadFile()">
<h1 id="result"></h1>
</body>

<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">
</script>
<script>
function uploadFile() {
 var file = $("#file")[0].files[0];
 var formData = new FormData();
 formData.append("file", file);
 $.ajax({
  type:"post",
  url:"/upload",
  processData:false,
  contentType:false,
  data:formData,
  success:function (msg) {
   $("#result").html(msg);
  }
 })
}
</script>
</html>
2.여러 개의 사진 업로드
전단 코드:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>
<form method="post" action="/uploads" enctype="multipart/form-data">
 <input type="file" name="files" multiple>
 <input type="submit" value="  ">
</form>
</body>
</html>
배경 코드:

 @RequestMapping("/uploads")
 public String fileUploads(MultipartFile[]files, HttpServletRequest request){
  String time = formatter.format(new Date());
  //              
  String realPath = request.getServletContext().getRealPath("/img") + time;
  File folder = new File(realPath);
  if(!folder.exists())
   folder.mkdirs();

  for (MultipartFile file : files) {
   //           (    )
   String oldName = file.getOriginalFilename();
   String newName = UUID.randomUUID() + oldName.substring(oldName.lastIndexOf("."));

   try {
    //          
    file.transferTo(new File(folder, newName));

    //          URL,     ,        ,      
    String returnUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "/img" + time + newName;
    System.out.println(returnUrl);
   } catch (IOException e) {
    e.printStackTrace();
   }
  }

  return null;
 }
3.문제 기록
배경 코드 중 한 줄 은 주의해 야 합 니 다.

 String realPath = request.getServletContext().getRealPath("/img") + time;
realPath 가 무엇 을 말 하 는 지 이해 해 야 합 니 다.테스트 를 시 작 했 을 때 그림 이 업로드 되 었 을 때 배경 아이디어 에서 해당 하 는 그림 을 찾 을 수 없 었 습 니 다.그리고 돌아 오 는 realPath 에 따라 CD 사용자 디 렉 터 리 의 한 폴 더 에서 이 그림(user/AppData/...)을 찾 았 습 니 다.
shift+shift 전역 검색  getCommonDocumentRoot 이 방법 은 눌 러 서 정적 배열 이 있 습 니 다:COMMONDOC_ROOTS

 private static final String[] COMMON_DOC_ROOTS = new String[]{"src/main/webapp", "public", "static"};
기본 값 은 웹 앱 이나 루트 디 렉 터 리 에 있 는 Public,static 폴 더(src 와 병렬)를 말 합 니 다.그러나 이 디 렉 터 리 들 이 없어 서 Spring 은 프로젝트 디 렉 터 리 이외 의 위치 로 정 해 졌 다.
그래서 나 는 루트 디 렉 터 리 에 static 폴 더 를 새로 만 들 고 다시 올 렸 는데 과연 효과 가 있 었 다.

이상 은 SpringBoot 가 사진 을 올 리 는 예시 의 상세 한 내용 입 니 다.SpringBoot 가 사진 을 올 리 는 것 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!

좋은 웹페이지 즐겨찾기