Microsoft로 로그인
로그인하거나 계정을 만듭니다.
안녕하세요.
다른 계정을 선택합니다.
계정이 여러 개 있음
로그인할 계정을 선택합니다.


이 문서의 영문 버전 보기:2512241

소개

이 문서를 다운로드할 수는 하나로 모든 프레임 워크 샘플을 설명 합니다. 이 코드 샘플 ASP.NET에서 로컬 또는 원격 서버에서 파일을 다운로드 및 업로드 하는 방법을 보여 줍니다. 다음의 다운로드 아이콘에서 샘플 패키지를 다운로드할 수 있습니다. 샘플 패키지의 C# 및 Visual Basic.NET 언어 버전을 사용할 수 있습니다.

이 코드 샘플을 업로드 하 고 사용자의 요청 도메인의 범위에 있지 않은 서버에서 파일을 다운로드 하는 방법을 보여 줍니다. HTTP 및 FTP 프로토콜을 사용 하 여 파일 전송 기능을 제공 합니다. 또한이 코드 예제에서는 동일한 리소스 식별자 (Uri) 서버에 있는 파일의 위치를 식별 이 코드 예제에 사용 되는 핵심 클래스는 WebClient 클래스 및 WebRequest 클래스입니다.

난이도 수준



alternate text

다운로드 정보

이 코드 샘플을 다운로드 하려면 다음 링크 중 하나를 클릭 합니다.

기술 개요

ASP.NET에서 원격 서버에서 파일을 다운로드 및 업로드 매우 쉽습니다. .NET Framework 클래스 라이브러리는 몇 가지 간단한 요청 개체를 제공합니다. WebClient 클래스는 상위 클래스 서버 상호 작용을 쉽게 하는. WebRequest 개체 요청을 WebClient 클래스에 의해 사용 됩니다. HttpWebRequest 및 FtpWebRequest 클래스는 추상 WebRequest 클래스의 특정 프로토콜 구현입니다. HttpWebRequest 업로드 하 고 파일을 다운로드 하는 HTTP 프로토콜의 GET 및 POST 메서드를 구현 합니다. FtpWebRequest 업로드 및 다운로드 파일을 FTP 프로토콜의 STOR 및 RETR 메서드를 구현 합니다.

다음 코드 예제에서는 WebClient클래스의 UploadData 및 DownloadData 메서드 URI는 원격 서버에서 데이터를 전송HTTP 프로토콜 PUT 메서드를 사용 하 여UploadData메서드를 사용 하 고 "응용 프로그램/x-www-양식-urlencoded" 인터넷 미디어 입력 합니다. DownloadData 메서드 FileStream 개체를 사용 하 여 들어오는 데이터 스트림을 저장 하 고 바이트 배열을 로컬 파일에 쓰는 데 사용 됩니다.

샘플 개요

이 샘플 코드에서는 다음과 같은 두 가지 새 클래스를 사용 하는 방법에 설명 하는 RemoteFileForm.aspx 파일을 찾을 수 있습니다.

  • RemoteUpload

  • RemoteDownload

RemoteUpload 클래스

RemoteUpload 클래스를는 두 개의 하위 클래스입니다. 이 클래스는 HttpRemoteUpload 과 FtpRemoteUpload. 두 클래스 모두 RemoteUpload 생성자를 사용 합니다. RemoteUpload 클래스에는 서버 URI 파일 데이터의 바이트 배열을 이어야합니다. 업로드 된 파일의 이름을 지정할 수도 있습니다. FtpRemoteUpload 클래스 FtpWebRequest 직접 (대신 상위 WebClient 클래스를 사용 하 여) 사용 하 여 FTP 프로토콜의 특정 요구 사항을 처리할 수 있습니다.

RemoteUpload 클래스에 대 한 자세한 내용은 다음 클래스 정의 참조 하십시오.public class HttpRemoteUpload : RemoteUpload
{
public HttpRemoteUpload(byte[] fileData, string fileNamePath, string urlString)
: base(fileData, fileNamePath, urlString)
{

}

public override bool UploadFile()
{
byte[] postData;
try
{
postData = this.FileData;
using (WebClient client = new WebClient())
{
client.Credentials = CredentialCache.DefaultCredentials;
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
client.UploadData(this.UrlString, "PUT", postData);
}

return true;
}
catch (Exception ex)
{
throw new Exception("Failed to upload", ex.InnerException);
}

}
}

public class FtpRemoteUpload : RemoteUpload
{
public FtpRemoteUpload(byte[] fileData, string fileNamePath, string urlString)
: base(fileData, fileNamePath, urlString)
{

}

public override bool UploadFile()
{
FtpWebRequest reqFTP;
reqFTP = (FtpWebRequest)FtpWebRequest.Create(this.UrlString);
reqFTP.KeepAlive = true;
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
reqFTP.UseBinary = true;
reqFTP.ContentLength = this.FileData.Length;

int buffLength = 2048;
byte[] buff = new byte[buffLength];
MemoryStream ms = new MemoryStream(this.FileData);

try
{
int contenctLength;
using (Stream strm = reqFTP.GetRequestStream())
{
contenctLength = ms.Read(buff, 0, buffLength);
while (contenctLength > 0)
{
strm.Write(buff, 0, contenctLength);
contenctLength = ms.Read(buff, 0, buffLength);
}
}

return true;
}
catch (Exception ex)
{
throw new Exception("Failed to upload", ex.InnerException);
}
}

}RemoteFileForm.cs 파일에서 업로드 단추를 클릭 하면 RemoteUpload 개체의 인스턴스가 만들어집니다. 서버 URI를 전달 및 개체를 만드는 매개 변수로 로컬 실제 파일 경로입니다.

참고 서버에 파일을 저장 하는 데 파일 이름을 지정 하지 않으면 시스템 파일 이름을 현재 날짜 및 시간 서버에 따라 자동으로 생성 됩니다. 날짜 및 시간 밀리초입니다. UploadData 메서드를 완료 한 후 현재 페이지에 결과가 표시 됩니다.

RemoteDownload 클래스

RemoteDownload 클래스는 두 개의 하위 클래스에 있습니다. 이 클래스는 HttpRemoteDownload 과 FtpRemoteDownload. RemoteDownload 클래스는 URI 리소스와 로컬 실제 디렉터리가 필요합니다. RemoteDownload 클래스는 시작 URI 리소스 다운로드 하기 전에 있는지 확인 하려면 확인 합니다. 클래스는 서버에서 응답 데이터를 포함 하 고 FileStream이 바이트 배열을 쓴 다음 스트림을 검색 합니다. FtpRemoteDownload 클래스 FtpWebRequest 직접 (대신 상위 WebClient 클래스를 사용 하 여) 사용 하 여 FTP 프로토콜의 특정 요구 사항을 처리할 수 있습니다.

RemoteDownload 클래스에 대 한 자세한 내용은 다음 클래스 정의 참조 하십시오. public class HttpRemoteDownload : RemoteDownload
{
public HttpRemoteDownload(string urlString, string descFilePath)
: base(urlString, descFilePath)
{

}

public override bool DownloadFile()
{
string fileName = System.IO.Path.GetFileName(this.UrlString);
string descFilePathAndName =
System.IO.Path.Combine(this.DescFilePath, fileName);
try
{
WebRequest myre = WebRequest.Create(this.UrlString);
}
catch
{
return false;
}
try
{
byte[] fileData;
using (WebClient client = new WebClient())
{
fileData = client.DownloadData(this.UrlString);
}
using (FileStream fs =
new FileStream(descFilePathAndName, FileMode.OpenOrCreate))
{
fs.Write(fileData, 0, fileData.Length);
}
return true;
}
catch (Exception ex)
{
throw new Exception("download field", ex.InnerException);
}
}
}

public class FtpRemoteDownload : RemoteDownload
{
public FtpRemoteDownload(string urlString, string descFilePath)
: base(urlString, descFilePath)
{

}

public override bool DownloadFile()
{
FtpWebRequest reqFTP;

string fileName = System.IO.Path.GetFileName(this.UrlString);
string descFilePathAndName =
System.IO.Path.Combine(this.DescFilePath, fileName);

try
{

reqFTP = (FtpWebRequest)FtpWebRequest.Create(this.UrlString);
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
reqFTP.UseBinary = true;


using (FileStream outputStream = new FileStream(descFilePathAndName, FileMode.OpenOrCreate))
using (FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse())
using (Stream ftpStream = response.GetResponseStream())
{
int bufferSize = 2048;
int readCount;
byte[] buffer = new byte[bufferSize];
readCount = ftpStream.Read(buffer, 0, bufferSize);
while (readCount > 0)
{
outputStream.Write(buffer, 0, readCount);
readCount = ftpStream.Read(buffer, 0, bufferSize);
}
}
return true;
}

catch (Exception ex)
{
throw new Exception("upload failed", ex.InnerException);
}
}
}
참고 만들고 샘플 응용 프로그램을 배포 하는 방법에 대 한 자세한 내용은 다운로드 패키지에 포함 되어 있는 Readme.txt 파일을 참조 하십시오.

언어

이 코드 샘플은 다음과 같은 프로그래밍 언어에서 사용할 수 있습니다.

언어

프로젝트 이름

C#

CSRemoteUploadAndDownload

Visual Basic.NET

VRemoteUploadAndDownload

기술 범주

  • ASP.NET 2.0

  • ASP.NET 3.5

  • ASP.NET 4.0

참조

WebClient 클래스에 대 한 자세한 내용은 다음 Microsoft 개발자 (MSDN) 웹 사이트를 방문 하십시오.

WebClient 클래스에 대 한 일반 정보UploadData 메서드에 대 한 자세한 내용은 다음 MSDN 웹 사이트를 방문 하십시오.

UploadData 메서드에 대 한 일반 정보DonwloadData 메서드에 대 한 자세한 내용은 다음 MSDN 웹 사이트를 방문 하십시오.

DonwloadData 메서드에 대 한 일반 정보FtpWebRequest 메서드에 대 한 자세한 내용은 다음 MSDN 웹 사이트를 방문 하십시오.

FtpWebRequest 메서드에 대 한 일반 정보FTP 통해 파일을 업로드 하는 방법에 대 한 자세한 내용은 다음 MSDN 웹 사이트를 방문 하십시오.

FTP 통해 파일을 업로드 하는 방법

추가 정보

하나로 모든 코드 프레임 워크 무엇입니까?

하나로 모든 코드 프레임 워크 다른 프로그래밍 언어에서 코드 샘플을 사용 하 여 대부분의 Microsoft 개발 기술을 보여 줍니다. 각 예제에서는 신중 하 게 선택, 구성, 이며 하나의 공통 코드 시나리오를 표시할 문서화 된. 하나로 모든 코드 프레임 워크에 대 한 자세한 내용은 다음 Microsoft 웹 사이트를 방문 하십시오.

http://1code.codeplex.com

자세한 하나로 모든 프레임 워크 코드 샘플을 찾는 방법

자세한 하나로 모든 프레임 워크 코드 샘플을 찾으려면 "kbcodefx"는 Microsoft에서 관련된 키워드와 함께 검색 웹 사이트를 지원 합니다. 또는 다음 Microsoft 웹 사이트를 방문 하십시오.

하나로 모든 코드 프레임 워크 샘플

신속한 게시 부인

마이크로소프트 및/또는 그 공급자 적합성, 신뢰성, 또는 정보 및 여기에 포함 된 관련 된 그래픽 정확성에 대 한 없는 표현을 확인 합니다. 이러한 모든 정보 및 관련 된 그래픽 어떤 종류의 보증 없이 "있는 그대로"를 제공 됩니다. Microsoft 및/또는 그 각 공급자 모든 보증 및 조건을이 정보 및 관련 된 그래픽, 모든 묵시적된 보증을 포함 하 여 상품성, 특정 목적, 시장성, 제목 및 비침해를 적합성 조건을 부인 거 합니다. 특히 동의 하는 경우에 Microsoft 및/또는 그 공급자 책임을 지지 어떠한 직접, 간접, 인과 응 보, 부수적, 특별, 파생적 손해 또는 모든 손해에 대 한 포함 하 제한 없이 사용, 데이터 또는 이익 손실로 인 한 부족 또는 사용 또는 정보 및 관련된 그래픽에 포함 된 여기에 사용할 수 없음으로와 연결 어떤 식으로든에서 발생 하는에 따라 계약, 불법행위, 과실, 엄격 책임 또는 Microsoft 또는 그 공급자가 손해의 가능성에 대해 충고 한 경우에 다른 것인지.

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.

커뮤니티를 통해 질문하고 답변하고, 피드백을 제공하고, 풍부한 지식을 갖춘 전문가의 의견을 들을 수 있습니다.

이 정보가 유용한가요?

언어 품질에 얼마나 만족하시나요?
사용 경험에 어떠한 영향을 주었나요?
제출을 누르면 피드백이 Microsoft 제품과 서비스를 개선하는 데 사용됩니다. IT 관리자는 이 데이터를 수집할 수 있습니다. 개인정보처리방침

의견 주셔서 감사합니다!

×