베어민
256
2019-10-22 14:57:19 작성 2019-10-22 15:12:46 수정됨
7
235

리눅스에서는 파일을 어디경로에 저장해야하나요?


파일업로드를 구현하고있는데.


윈도우의 경우 c드라이브의 업로드폴더 에 파일저장 이런식으로 보통하자나요


File file = new File("c:\\upload\\" + fileName);


그런데 리눅스는 도대체?c드라이브도 없고 보통 경로를 뭐라고 저장해야하는지ㅠ


우분투..리눅스 초보가 질문드립니다..


푸티 리눅스 명령창에서 pwd라고치면

/home/ubuntu 라고 나오거든요


그럼 여기에서 mkdir upload 명령어로 디렉토리를 만들고 


이 디렉토리에 파일을 저장하면될련지 모르겠네요


만약 이렇게했다면 경로를 어찌 적어야할까요..


File file = new File("\\home\\ubuntu\\upload" + fileName);

이렇게 해야하는건지..?ㅠ


0
0
  • 답변 7

  • 아이워너야근
    279
    2019-10-22 15:32:29

    웹와스 구동시키는 계정 폴더 내 하나 지정해서 사용하시면 아무래도 좋지 않을까 싶습니다


    0
  • 제타건담
    6k
    2019-10-22 15:47:22 작성 2019-10-22 15:48:38 수정됨

    리눅스는 파티션에 이런 디렉토리가 있다..라는 식의 컨셉이기 때문에 딱히 정해진 룰은 없습니다..

    다만 파일 업로드이시다보니 파티션으로 봤을때는 공간이 많이 여유가 있는 곳에 자신이 디렉토리 하나 만들어서 작업하는게 낫겠죠..

    그리고 꼭 계정 디렉토리가 아니어도 됩니다..타계정과 타그룹에 대한 읽기, 쓰기 권한을 부여해주는 것으로 해결이 가능한 부분이기 때문에..

    0
  • 베어민
    256
    2019-10-22 15:52:38

    제타건담 그럼 그냥 제가 글에쓴것처럼 저렇게 폴더를 만들고..File file = new File("\\home\\ubuntu\\upload" + fileName); 이렇게 경로를 지정하면 되는건가요..?ㅠ

    0
  • 제타건담
    6k
    2019-10-23 13:53:13 작성 2019-10-23 13:54:21 수정됨

    네..대신 권한을 설정해야 되요..일반적으로 디렉토리를 만들면 자신이 아닌 다른 계정은 쓰기 권한이 안되기 땜에..권한을 실행 권한만 빼는 식으로 해주시면 될듯 하네요..실행 권한 까지 부여해버리면 해킹의 우려가 있기 땜에..가장 베스트는 was를 실행시키는 계정을 별도로 만들고 그 계정으로 로그인해서 디렉토리를 만든뒤 거기서 실행권한을 빼는게 낫죠..chmod로 600을 부여해주면 디렉토리를 만든 계정만 읽고 쓰기가 가능하고 해당 계정이 속한 그룹 또는 아예 다른 계정은 읽기, 쓰기, 실행이 모두 안되기 땜에 가장 안전할수 있겠지만..그리 해버리면 관리 차원에서 타계정으로 로그인해서 이동, 복사, 삭제할때 문제가 생길수도 있으니까..666 정도면 되지 않을까 하네요..저도 리눅스는 잘 아는 편은 아니지만..그렇게 하면 운영에 있어서 문제는 없을듯 한데요..

    0
  • 베어민
    256
    2019-10-28 21:46:31

    제타건담

    답변 너무감사합니다

    오류가 해결안되서 이제야 글 남깁니다ㅠㅠ

    String uploadPath ="/home/ubuntu/upload"; 

    이렇게 패스 줘서 우분투 폴더에 업로드를 시켰습니다.


    그런데 디렉토리의 업로드 이미지 파일을 가져오고싶은데 아래와 같이 이미지 src에 경로넣어서


    <img src="/home/ubuntu/upload/dokky.png" class="PROFILE_IMG">


    가져오면 404 에러가 납니다ㅠㅠ 왜그런걸까요.. 업로드 폴더 만들때 777로 줬습니다


    drwxrwxrwx  2 root   root   4096 Oct 28 01:55 upload



    0
  • 제타건담
    6k
    2019-10-29 00:23:43

    /home/ubuntu/upload/ 디렉토리는 web에 노출되어 있는 경로가 아닙니다..그래서 404 에러가 나는거에요..

    지금 구성이 was 만 있는건지..was + web 서버 구성인지는 모르겠으나 web 경로상의 root 부터 접근이 가능한거에요..

    그리고 일반적으로 upload 디렉토리는 외부에 오픈시키지 않습니다. 그 이유는 upload 디렉토리가 외부에 오픈되어버리면 보안에 취약하기 때문이죠..

    그래서 Java의 File 클래스를 이용해서 업로드된 파일의 객체를 얻은뒤 이를 이용해서 작업을 하는거죠..업로드 된 파일을 다운로드 할때 File 객체를 읽어다가 HttpServletResponse 객체를 통해 write 하는 스타일로 구현하자너요..그런식으로 접근하셔야 합니다..

    일단 web 경로의 root 개념부터 먼저 숙지하시고 그 다음에 파일 다운로드 관련 프로그래밍을 어떻게 하는지 공부하시면 정리가 되실듯 하네요..

    0
  • 베어민
    256
    2019-10-30 22:16:34

    답변 감사합니다. 현재 apache 웹서버와 톰캣 was로 구성되어있는 스프링 개인프로젝트 커뮤니티입니다.

     아 upload디렉토리가 외부에 노출이되면 그 폴더로 바이러스 파일을 누군가 업로드 시킬수있어서

    보안상 취약한거죠?ㅎㅎ

    이제서야 파일 업로드 다운로드의 전체적인 윤곽이 보이네요..무작정 사용하기에만 바빳던거같아요ㅠㅠ

    파일 다운로드하는 방식으로 현재 이미지 보여주게끔 바꾸니 잘 이미지가 뜨네요ㅎㅎ

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