ASP.net 파일 업로드 다운로드
2011-07-02 09:50:56

출처 :

http://hoons.kr/board.aspx?Name=QAASPNET&BoardIdx=16007&Page=1&Mode=2

업로드 로직

/// <summary>

/// 파일을 서버에 저장하는 함수

/// </summary>

/// <param name="fu">파일 업로드 객체</param>

/// <param name="upDir">파일이 저장될 서버상의 경로</param>

/// <returns></returns>

public string saveFile( FileUpload fu, string upDir )

{

  //서버에 디렉토리가 존재하는 확인하고 디렉토리가 없다면 디렉토리 생성

  DirectoryInfo dInfo = new DirectoryInfo(upDir);

  if (!dInfo.Exists)

  {

    dInfo.Create();

  }

   //새로 업로드 할 파일과 동일한 파일명이 서버에 존재 할 경우

  //파일명에 언더바(_)와 함께 순서 번호를 붙여서 파일 중복을 피한다.

  string fileName = fu.FileName; //클라이언트 측 파일 경로가 제거된 순수 파일명

  string fileFullName = upDir + fileName; //업로드될 서버측 경로와 파일명

  FileInfo fInfo = new FileInfo(fileFullName);

  string newFileName = string.Empty; //파일 중복을 피하기위해 새로 생성된 파일명

  //서버에 같은 이름의 파일이 존재 하는지 확인

  if (fInfo.Exists)

  {

    //같은 이름의 파일이 있다면

    int fIndex = 0; //파일 순서

    string fExtension = fInfo.Extension; //파일의 확장자 추출

    string fRealName = fileName.Replace(fExtension, ""); //파일명의 확장자 제거

    //파일명이 중복되지 않을때까지 루프를 돌면서 검사

    do

    {

      fIndex++;//파일 번호 증가

      //새로운 파일 이름 (확장자 제거된 파일명 + _ + 순서번호 + 확장자)

      newFileName = fRealName + "_" + fIndex.ToString() + fExtension;

      //새로운 파일 이름으로 파일정보 생성

       fInfo = new FileInfo(upDir + newFileName);

    } while (fInfo.Exists); //파일이 존재 한다면 다시 반복

    fileFullName = upDir + newFileName; //서버측 업로드 경로 + 새로운 파일명

    fu.PostedFile.SaveAs(fileFullName); //만들어진 경로와 파일명으로 파일을 서버측에 업로드

    return newFileName; //새로 만들어진 파일명 만 반환

  }

  else

  {

    //같은 이름의 파일이 없다면

    fu.PostedFile.SaveAs(fileFullName); //최초 정해진 경로와 파일명으로 서버측에 업로드

    return fileName; //파일명 반환

  }

}

다운로드 로직

/// <summary>

/// 파일 다운로드 하기

/// </summary>

/// <param name="fileName">다운로드할 파일명</param>

/// <param name="fileDir">파일이 위치한 서버측 경로</param>

protected void downFile( string fileName, string fileDir )

{

  string downPath = fileDir + fileName;

  if ( File.Exists( downPath ) )

  {

    Response.Clear();

    Response.AddHeader("Content-Disposition", "attachment;filename="

                         + Server.UrlEncode( fileName ).Replace( "+", "%20" ) );

    Response.ContentType = "application/octet-stream";

    Response.TransmitFile( downPath );

Response.End()

  }

}

[출\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0처] ASP.net 파일 업로드 다운로드 |작성자 라케시스

▼ more
기능 구현 일지^^
2011-07-02 09:20:23

웹사이트 기능,

클라이언트에서 서버로 업로드 OK

서버에서 클라이언트로 다운로드 NO

유튜브에서 사이트로 다운로드 OK

서버에서 편집 NO

서버에서 여러 파일을 하나로 합침 NO

모양꾸미기 NO

플레이어 기능

Youtube API를 이용하여 동영상을 원하는 시간에 재생 OK

Youtube API를 이용하여 스크롤 바, Youtube 기능 버튼을 보이지 않게함 NO

스크롤바를 Javascript로 재 생산 NO

fullsize로 하여 iframe을 바꾸면 player의 크기가 변하도록 함. NO

Toolbar

툴바 설치 없이 IE에 등록 OK

툴바 프로그램 변경 및 화면, 리스너 커스터 마이징 OK

브라우저가 보고 있는 화면의 html 얻어와서 youtube 태그 확인하기 OK

youtube 태그에서 video id 들을 추출한뒤 해당 id로 youtube 정보 url에서 innerid 알아와 id와 innerid를 짝지어 video배열에 넣음 OK

tcp 패킷을 분석하는 모듈 OK

tcp 패킷 모둘 분석중 youtube 패킷을 찾아냄.(ascii code가 움직이는 패킷에서 html 내용을 찾아냄) OK

속도 향상을 위해 800 이상, youtubeplayback을 가진 패킷만 분석하여 video id를 포함한 영상에 대한 정보를 얻음. OK

innerid와 사이트 html 태그로 부터 얻은 video 배열과 일치하는 innerid가 나오면 그 곳에서 video id를 얻어온다. OK

툴바 설치 프로그램 설정 레지스터 설정 및 dotnet 버전을 2.0으로 낮춤.(strong name signing을 위해 dotnetpacket, sharppcap을 낮은 버전으로 재빌딩) OK

모양 꾸미기 그림 가능 OK

모양 꾸미기 그외 꾸미기 NO

정규식 예외 처리 파일화 NO

▼ more
C#에서 다운로드 파일~^^ sync~~
2011-07-01 23:06:59

using System.Net;

WebClient webClient = new WebClient();

webClient.DownloadFile("http://mysite.com/myfile.txt", @"c:\myfile.txt");

▼ more
c#에서 다운로드 파일~^^
2011-07-01 23:02:50

private void btnDownload_Click(object sender, EventArgs e)

{

WebClient webClient = new WebClient();

webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);

webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);

webClient.DownloadFileAsync(new Uri("http://mysite.com/myfile.txt"), @"c:\myfile.txt");

}

private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)

{

progressBar.Value = e.ProgressPercentage;

}

private void Completed(object sender, AsyncCompletedEventArgs e)

{

MessageBox.Show("Download completed!");

}

▼ more