저번에는 WinInet을 이용하여 C++로 파일 전송을 하였습니다.
이제 웹서버 측에서 파일을 받아야 할텐데요.

서버는 윈도우NT 계열이며 ASP.NET을 사용하였습니다.

1. Upload.aspx
우선 전송 받을 페이지를 만들어야 할텐데요.
어차피 전송 하는쪽에서 페이지를 완성하여 보내기 때문에
우리가 만들 페이지에는 별다른 내용이 없습니다. - _-;

<%@ Page Language="C#" CodeFile="ngmUpload.aspx.cs" %>

Upload.aspx 페이지에 내용이며 여기에는 단순히 CodeFile만 지정됩니다.

2. Upload.aspx.cs
실제로 서버에 파일을 저장하게 될 CodeFiel의 내용이 중요한데요.
ASP.NET을 사용하기 때문에 무지 단순합니다 ㅋ
protected void Page_Load(object sender, EventArgs e)
{
    string strFileName = Request.Files["VirusFile"].FileName;
    string strSaveLocation = Server.MapPath("Data") + "\\" + strFileName;

    try
    {
		Request.Files["VirusFile"].SaveAs(strSaveLocation);
		Response.Write("The file has been uploaded.");
    }
    catch ( Exception ex )
    {
		Response.Write("Error : " + ex.Message);
    }
}

얼마나 단순 합니까? ㅋ
단순히 Page_Load 이벤트 하나에 모든일이 다 해결 됩니다.

이전 포스트에 제가 name은 웹 서버에서 파일을 받기 위해 식별자로 사용한다고 했습니다.
그리고 그때 name은 TransferFile로 지정했었죠.
strContentInfo.Format( ( "--MULTI-PARTS-FORM-DATA-BOUNDARY\r\nContent-Disposition: form-data; name=\"TransferFile\"; filename=\"%s\"\r\nContent-Type: application/octet-stream\r\n\r\n" ), szUploadName );

바로 그 지정된 name을 통해 파일 이름을 얻어오고( 이 또한 우리가 filename으로 지정한 값입니다. )

사실 저장할 파일명은 임의로 다시 정해도 됩니다.
문제는 동일한 파일명을 저장할려고 할 때 덮어씌워져 버린다는 것이죠!
따라서 파일명은 절대로 유니크 해야 합니다.

저는 이미 파일을 전송할 때 사용자의 로컬 타임과 난수등을 사용하여 filename에 유니크한 값을 지정하였습니다.
그래서 지금 아무런 변경 없이 그대로 사용하고 있는 거구요.
( 어느 쪽에서든 파일 이름을 유니크하게만 해주시면 됩니다. ^^ )

그리고 서버에 저장할 경로까지 지정을 해준 다음에 SaveAs() 함수를 사용하면 끝! 입니다 ^^

이후에는 서버에서 파일을 잘 저장했는지 Response를 보내는 부분입니다.
사실 저번에 파일을 전송하는 부분까지만 코드가 짜져있었는데요.
파일을 성공적으로 전송한 후에 서버로부터 Response를 받아 실패 유무를 확인 해야 합니다.

이부분이 코드로 빠져있었는데... 이건 모 여러분이 충분히 알아 볼 수 있을 겁니다. ㅋ
요청해주시면( 설마 누가 이런 포스트를 보겠어! ) 이 부분도 올리도록 하겠습니다.
◀ PREV | 1 | 2 | 3 | 4 | NEXT ▶

카테고리

분류 전체보기 (28)
주절주절 (15)
바라보기 (5)
구경하기 (4)
기억하기 (4)

최근에 받은 트랙백

달력

«   2019/08   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Total : 12,714
Today : 0 Yesterday : 0
Statistics Graph