younggonkim
36
2019-01-17 13:29:17
3
634

spring boot 관련 질문드립니다.


[Spring boot (내장 WAS) , JPA, Security 사용]


controller에서 주석된 부분이 이슈입니다.


서버경로불러와 images 폴더를 만들어서 해당 경로에 저장하게 하는데



처음에는 읽어오나 새로고침이나 spring boot를 재시작할때마다 사진에서 처럼 폴더가 계속 생성(변경)되어 경로를 읽어올 수 없습니다.

혹시 방법이있을까요 ?




이미지는 이런식으로 불러오고 있습니다.

0
0
  • 답변 3

  • zepinos
    19k
    2019-01-17 13:59:25

    조금 이해가 안가는게...주석된 부분은...실제 파일은 FileUtils 로 저장이 되고 그 아래에 uploadFileService.Upload() 로 파일 정보(경로 등)를 저장하고 있는 것 같은데요.


    상수로 선언된 fupload 경로가...즉 tomcat-docbase.186... 인게 245.. 이런 식으로 가변적으로 바뀐다는 건가요???


    당연히 아래 thymeleaf 에서 출력하는 흰 색으로 가리신 부분은 DB 의 정보(이미지 경로)일 것 같은데 어떤 식으로 가공한건지 코드 상으로는 유추할 수가 없네요.


    질문 범위가 너무 광범위하고 어디 코드를 가져오신건지...코드에 대한 이해도가 좀 떨어지는 것 같습니다.

    문제가 여러개 복합적이기 때문에, 좀 나눠서 하나씩 해결해야 할 필요가 있겠네요.


    1. 파일이 원하는 위치에 저장되는가?

    2. 파일이 저장된 경로가 DB 에 저장되는가?

    3. DB 에 저장된 경로를 이용해 html 에서 호출할 URL 을 생성할 수 있는가?

    4. 호출된 URL 로 원하는 위치에 저장된 파일(이미지)을 사용자가 다운로드(화면표시) 할 수 있는가?


    대충 이렇게 질문이 흘러가야 되겠네요.

    0
  • zepinos
    19k
    2019-01-17 14:05:30

    이미지 업로드 후 그걸 다시 보는 흐름에 대해서 간략하게 설명하겠습니다.


    1. html 에서 <form> 으로 파일 업로드

    2. 이미지 객체로 업로드된 파일을 저장(위 캡처에선 uploadFile)

    3. 정해진 경로에(특정 위치까지는 고정, 그 이후는 시간 등으로 나눠서 가변적으로 지정할 수 있음) 파일을 실제로 저장

    4. 정해진 경로 정보를 포함해서(보통은 특정 고정위치까지는 제외하고 뒷부분-가변적인 것 포함-만) DB 에 해당 내용 저장

    5. 화면에 이미지를 보여줄 때에는 DB 에서 경로 정보를 읽어서 URL 로 재조합

    6. 재조합된 URL 을 통해 서비스 하기 위해 3번 경로를 그대로 전송할 수 있는 WAS 혹은 HTTPd 구성 필요, 혹은 프로그램에서 직접 binary 정보를 out 으로 출력해서 처리하는 방법도 존재


    6번이 살짝 어렵고, 상황에 따라 마지막 html(thymeleaf)에 출력하는 5, 6 번이 바뀔 수도 있습니다.

    0
  • zepinos
    19k
    2019-01-17 15:20:06

    상단의 fupload 주석된 곳이 서블릿 상대경로로 되어 있었네요...;;;


    그래서 IDE 가 Tomcat 실행할 때 docbase 을 가변적으로 바꿔져서 경로가 바뀌는 것입니다.


    실제 파일 저장 시 저렇게 서블릿 경로 내에 위치하면 배포 시 기존 파일이 지워지는 문제를 해결해놓고 해야 합니다. 학원에서 대충 저렇게 가르치는 곳도 있나 보던데...에효...

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.