ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ASP.NET으로 게시판 만들기 3부
    Programing/Web 2008. 6. 3. 15:37
     
    대단히 오랜만에 3부를 진행하는것 같다.
    개인적인 일로..또는 회사 일 때문에 그동안 무척이나 바쁜 생활의 연속이였으니....

    암튼 2부까지는 글쓰기 페이지에 대한 이야기를 하다가 멈춤것 같다.

    어떻게 생각해보면 앞으로 게시판을 완성하기 위해 가장 필요한 페이지면서 또 가장 쉬운 페이지라 할수 있는 것이 바로 이 글쓰기 페이지 이다.

    글쓰기 페이지에서 가장 중요한것은 글쓰기 완료 버튼 또는 저장 버튼을 눌렸을때 웹폼에 있는 각 컨트롤들의 값을 불러모아..자신이 만든 DB에 완벽하게 저장을 시키는 것.....단지 이것 하나만 알고 있으면 된다.

    위의 문장을 실행하기 위해서는

     1) 저장 할 값들에 대한  Insert(Values) 쿼리문을 작성하고
     2) SqlCommand(보통 cmd) 객체를 생성하고
     3) cmd.Parameters.AddWithValue를 이용하여 값을 받아 온 후
     4) cmd.ExecuteNonQuery() 을 이용하여 sql문을 실행 시켜주면 땡인거다.

    이것이 바로 일반적인 글스기 페이지의 기본 원리이다...
    여기서 윈폼에서의 여러가지 옵션(예를들어 RequiredFieldValidator을 이용하여 유효성검사를 한다던지...)과 다른 기능들은 실제로 각자 어떤 페이지를 만드느냐의 목적에 따라 많이 달라지게 되는 것이다.

    나의 경우 위에서 설명한 기본 글 저장 이외에 파일첨부라는 기능을 추가하기로 했다.
    그냥 파일 첨부를 한다.....다른 글 처럼 DB에 저장을 한다..라고 생각하면 큰 오산이다.
    우선 파일 첨부를 하기 위해서는 업로드한 파일을 담을 공간을 하나 만들어야 한다. 프로젝트 기본 폴더 경로에 upDir라는 폴더를 하나 생성한 후 web.config파일에 다음과 같은 문구를 써 넣었다.

         <appSettings>
            <add key="FilePath" value="~/upDir/" />
        </appSettings>

    위의 <appSettings> 요소 하위에는 프로그램에서 사용하는 기타 여러가지 설정 사항들을에 대한 사용자 지정을 할 수 있다. 여기서는 업로드 할 파일의 경로를 정의했다. 이렇게 소스코드의 여러곳에서 사용되면서 변경될 가능성이 있는 설정 사항들은 보통 구성 파일에 정의해 둔다.

    이렇게 업로드파일을 담을 공간을 준비했다면 저장을 할 준비도 끝난것이다.
    위의 1~4번 기본 코스외에 첨부파일이 있는지 없는지 검사를 하는 타임을 먼저 가져야한다.(왜냐하면 모든 사람을 파일을 첨부하지는 않을 것이기 때문에 지금 이글이 파일을 첨부하는것인지 아닌것인지를 알고 저장을 해야한다.)

    if (FileUpload.HasFile)

    위의 문장은 FileUpload라는 FileUpload컨트롤이 파일을 가지고 있다면......이라는 뜻이다. 즉 첨부할 파일이 있느냐 없느냐를 물어보는 것이다.
    만약 파일이 없다라면(else) 위에서 설명한 1~4번 코스를 돌아 글을 저장하면 되지만, 파일이 있다면 이야기가 달라지는 것이다.
    만약...첨부할 파일이 있다라면...우리는 아래와 같은 고민을 해결해야 한다.

    1. 파일이 저장 될 공간을 잘 찾아가야 한다...만약 잘 찾아갔는데 그 공간이 없다면....스스로 만들 필요도 있다.

    2. 만약 동일 이름을 가진 파일이 있다면....이름을 최대한 알기 쉽게 변경을 해야한다. 하지만 후에 다운을 받을 일이 있을때를 대비해야한다.


    1,2번 이외에도 여러가지 돌발상황등을 대비할 필요가 있지만 일단 위의 2가지 사항만을 해결해서 다음과 같은 SaveFile 함수를 하나 만들었다.  SaveFile함수는 파일을 저장하고 마지막으로 그 파일의 이름을 리턴해주는 역활을 한다. (참고로 두번째 인자 upDir는 저장될 경로이다.)


    결국 다음과 같이 결론을 낼 수 있다.
    글쓰기 페이지에서 가장 중요한건 버튼을 누른다던지의 이벤트를 했을 경우 각요소들의 글 내용이 제대로 DB에 삽입되어지면 되는것이다. 다만 만약 파일을 첨부한다라면...글을 DB에 담기전에 우선 파일을 원하는 경로에다 원하는 이름으로 저장을 한 후 글을 DB에 담는다...라고 이해하면 되는 것이다.


    PS) 완전 허접하겠지만 게시판 소스는 블로그에 추후 올려질 예정이다.

    'Programing > Web' 카테고리의 다른 글

    기본 MVC 프로젝트 구조  (0) 2009.12.07
    ABCUpload 업로드 파일 지우기  (0) 2009.11.27
    asp.net 2.0 SMTP 메일 보내기  (0) 2008.07.15
    데이터 바인딩 컨트롤  (0) 2008.07.14
    PHP 간략 정리  (0) 2008.06.10
    SqlDataReader 객체 사용하기  (0) 2008.05.20
    FileUpload 컨트롤  (0) 2008.05.14
    Server.MapPath  (0) 2008.05.14
    ASP.NET으로 게시판 만들기 2부  (1) 2008.05.13
    ASP.NET으로 게시판 만들기 1부  (0) 2008.05.09
Designed by Tistory.