내보내기(0) 인쇄
모두 확장
이 문서는 기계로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본
이 항목은 아직 평가되지 않았습니다.- 이 항목 평가

FtpWebRequest 클래스

FTP(파일 전송 프로토콜) 클라이언트를 구현합니다.

네임스페이스:  System.Net
어셈블리:  System(System.dll)
public sealed class FtpWebRequest : WebRequest

FtpWebRequest 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Public 속성AuthenticationLevel이 요청에 사용되는 인증 및 가장 수준을 나타내는 값을 가져오거나 설정합니다. (WebRequest에서 상속됨)
Public 속성CachePolicy이 요청에 대한 캐시 정책을 가져오거나 설정합니다. (WebRequest에서 상속됨)
Public 속성ClientCertificatesFTP 서버에 대해 암호화된 연결을 설정하는 데 사용되는 자격 증명을 가져오거나 설정합니다.
Public 속성ConnectionGroupName현재 요청을 보내는 데 사용되는 서비스 지점이 들어 있는 연결 그룹의 이름을 가져오거나 설정합니다. (WebRequest.ConnectionGroupName을(를) 재정의함)
Public 속성ContentLength인프라입니다. FtpWebRequest 클래스에서 무시되는 값을 가져오거나 설정합니다. (WebRequest.ContentLength을(를) 재정의함)
Public 속성ContentOffset이 요청으로 다운로드할 파일의 바이트 오프셋을 가져오거나 설정합니다.
Public 속성ContentType인프라입니다. 항상 NotSupportedException을 throw합니다. (WebRequest.ContentType을(를) 재정의함)
Public 속성CreatorInstance 사용되지 않습니다. 하위 클래스에서 재정의될 때, 지정된 URI 에 요청하기 위해 인스턴스화된 WebRequest를 만드는 데 사용되는 IWebRequestCreate 클래스에서 파생된 팩터리 개체를 가져옵니다. (WebRequest에서 상속됨)
Public 속성CredentialsFTP 서버와 통신하는 데 사용되는 자격 증명을 가져오거나 설정합니다. (WebRequest.Credentials을(를) 재정의함)
Public 속성정적 멤버DefaultCachePolicy모든 FTP 요청에 대한 기본 캐시 정책을 정의합니다.
Public 속성EnableSslSSL 연결 사용 여부를 지정하는 Boolean을 가져오거나 설정합니다.
Public 속성Headers인프라입니다. WebHeaderCollection 개체를 가져옵니다. (WebRequest.Headers을(를) 재정의함)
Public 속성ImpersonationLevel현재 요청에 대한 가장 수준을 가져오거나 설정합니다. (WebRequest에서 상속됨)
Public 속성KeepAliveFTP 서버에 대한 제어 연결이 요청 완료 후 닫히는지 여부를 지정하는 Boolean 값을 가져오거나 설정합니다.
Public 속성MethodFTP 서버에 보낼 명령을 가져오거나 설정합니다. (WebRequest.Method을(를) 재정의함)
Public 속성PreAuthenticate인프라입니다. 항상 NotSupportedException을 throw합니다. (WebRequest.PreAuthenticate을(를) 재정의함)
Public 속성ProxyFTP 서버와 통신하는 데 사용되는 프록시를 가져오거나 설정합니다. (WebRequest.Proxy을(를) 재정의함)
Public 속성ReadWriteTimeout스트림을 읽거나 쓸 때의 제한 시간을 가져오거나 설정합니다.
Public 속성RenameTo이름을 바꿀 파일의 새 이름을 가져오거나 설정합니다.
Public 속성RequestUri이 인스턴스에서 요청한 URI를 가져옵니다. (WebRequest.RequestUri을(를) 재정의함)
Public 속성ServicePointFTP 서버에 연결하는 데 사용되는 ServicePoint 개체를 가져옵니다.
Public 속성Timeout요청 대기 시간(밀리초)을 가져오거나 설정합니다. (WebRequest.Timeout을(를) 재정의함)
Public 속성UseBinary파일 전송을 위한 데이터 형식을 지정하는 Boolean 값을 가져오거나 설정합니다.
Public 속성UseDefaultCredentials인프라입니다. 항상 NotSupportedException을 throw합니다. (WebRequest.UseDefaultCredentials을(를) 재정의함)
Public 속성UsePassive클라이언트 응용 프로그램의 데이터 전송 프로세스에 대한 동작을 가져오거나 설정합니다.
위쪽
  이름설명
Public 메서드Abort비동기 FTP 작업을 종료합니다. (WebRequest.Abort()을(를) 재정의함)
Public 메서드BeginGetRequestStream요청의 콘텐츠 스트림을 쓰기 위해 비동기적으로 여는 작업을 시작합니다. (WebRequest.BeginGetRequestStream(AsyncCallback, Object)을(를) 재정의함)
Public 메서드BeginGetResponse비동기적으로 FTP 서버에 요청을 보내고 응답을 받는 작업을 시작합니다. (WebRequest.BeginGetResponse(AsyncCallback, Object)을(를) 재정의함)
Public 메서드CreateObjRef원격 개체와 통신하는 데 사용되는 프록시 생성에 필요한 모든 관련 정보가 들어 있는 개체를 만듭니다. (MarshalByRefObject에서 상속됨)
Public 메서드EndGetRequestStream BeginGetRequestStream 으로 시작된 보류 중인 비동기 작업을 종료합니다. (WebRequest.EndGetRequestStream(IAsyncResult)을(를) 재정의함)
Public 메서드EndGetResponse BeginGetResponse 로 시작된 보류 중인 비동기 작업을 종료합니다. (WebRequest.EndGetResponse(IAsyncResult)을(를) 재정의함)
Public 메서드Equals(Object) 지정한 개체가 현재 개체와 같은지 여부를 확인합니다. (Object에서 상속됨)
Public 메서드GetHashCode기본 해시 함수로 작동합니다. (Object에서 상속됨)
Public 메서드GetLifetimeService이 인스턴스의 수명 정책을 제어하는 현재의 수명 서비스 개체를 검색합니다. (MarshalByRefObject에서 상속됨)
Public 메서드GetRequestStream데이터를 FTP 서버에 업로드하는 데 사용되는 스트림을 검색합니다. (WebRequest.GetRequestStream()을(를) 재정의함)
Public 메서드GetRequestStreamAsync서브클래스에서 재정의될 때, 인터넷 리소스에 비동기 작업으로 데이터를 쓰기 위해 Stream을 반환합니다. (WebRequest에서 상속됨)
Public 메서드GetResponseFTP 서버 응답을 반환합니다. (WebRequest.GetResponse()을(를) 재정의함)
Public 메서드GetResponseAsync서브클래스에 재정의될 때, 인터넷 요청에 대한 응답을 비동기 작업으로 반환합니다. (WebRequest에서 상속됨)
Public 메서드GetType현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Public 메서드InitializeLifetimeService이 인스턴스의 수명 정책을 제어하기 위한 수명 서비스 개체를 가져옵니다. (MarshalByRefObject에서 상속됨)
Public 메서드ToString현재 개체를 나타내는 문자열을 반환합니다. (Object에서 상속됨)
위쪽
  이름설명
명시적 인터페이스 구현Private 메서드ISerializable.GetObjectData인프라입니다. 서브클래스에서 재정의될 때, WebRequest를 serialize하는 데 필요한 데이터로 SerializationInfo 인스턴스를 채웁니다. (WebRequest에서 상속됨)
위쪽

FtpWebRequest 의 인스턴스를 얻으려면 Create 메서드를 사용합니다. WebClient 클래스를 사용하여 FTP 서버에 정보를 업로드하거나 다운로드할 수도 있습니다. 둘 중 어느 방법을 사용하든 FTP 체계(예: "ftp://contoso.com")를 사용하는 네트워크 리소스를 지정하면 FtpWebRequest 클래스에서는 프로그래밍 방식으로 FTP 서버와 상호 작용하기 위한 기능을 제공합니다.

URI는 상대적이거나 절대적일 수 있습니다. URI가 "ftp://contoso.com/%2fpath" 형식(%2f는 이스케이프된 '/')이면 해당 URI는 절대 URI이며 현재 디렉터리는 /path입니다. 그러나 URI가 "ftp://contoso.com/path" 형식이면 먼저 .NET Framework에서 Credentials 속성으로 설정된 사용자 이름과 암호를 사용하여 FTP 서버에 로그인한 다음 현재 디렉터리가 <UserLoginDirectory>/path로 설정됩니다.

사용자에게 서버에 대한 올바른 사용자 이름과 암호가 있거나, 서버에서 익명 로그온을 허용해야 합니다. Credentials 속성을 설정하여 서버에 연결하는 데 사용되는 자격 증명을 지정하거나, Create 메서드에 전달되는 URI의 UserInfo 부분에 자격 증명을 포함시킬 수 있습니다. URI에 UserInfo 정보를 포함시키면 Credentials 속성은 지정된 사용자 이름 및 암호 정보를 사용하는 새 네트워크 자격 증명으로 설정됩니다.

주의 정보주의

EnableSsl 속성이 true로 설정되어 있지 않으면 사용자 이름 및 암호 정보를 비롯한 모든 데이터와 명령이 일반 텍스트 형식으로 서버에 보내집니다. 이 경우 네트워크 트래픽을 모니터링하는 다른 모든 사용자가 사용자의 자격 증명을 보고 이를 사용하여 서버에 연결할 수 있습니다. 연결하려는 FTP 서버가 자격 증명을 필요로 하고 SSL(Secure Sockets Layer)을 지원하면 EnableSsltrue로 설정해야 합니다.

FTP 리소스에 액세스하려면 WebPermission이 있어야 합니다. 그렇지 않으면 SecurityException 예외가 throw됩니다.

Method 속성을 WebRequestMethods.Ftp 구조체에 정의된 값으로 설정하여 서버에 보낼 FTP 명령을 지정할 수 있습니다. 텍스트 데이터를 전송하려면 UseBinary 속성을 기본값인 true에서 false로 변경합니다. 자세한 내용과 제한 사항은 Method를 참조하십시오.

FtpWebRequest 개체를 사용하여 서버에 파일을 업로드하는 경우에는 GetRequestStream 메서드나 해당 비동기 메서드인 BeginGetRequestStreamEndGetRequestStream 메서드를 호출하여 가져온 요청 스트림에 파일 내용을 써야 합니다. 요청을 보내려면 먼저 스트림에 쓴 다음 이 스트림을 닫아야 합니다.

요청은 GetResponse 메서드나 해당 비동기 메서드인 BeginGetResponseEndGetResponse 메서드를 호출하여 서버로 보내집니다. 요청된 작업이 완료되면 FtpWebResponse 개체가 반환됩니다. FtpWebResponse 개체는 작업 상태와 서버에서 다운로드된 데이터를 제공합니다.

ReadWriteTimeout 속성을 사용하여 서버에 대한 읽기 또는 쓰기 제한 시간 값을 설정할 수 있습니다. 제한 시간이 초과되면 호출 메서드에서는 WebExceptionStatusTimeout으로 설정된 WebException을 throw합니다.

FTP 서버에서 파일을 다운로드하는 경우 명령이 성공적으로 수행되면 응답 개체의 스트림에서 요청된 파일의 내용을 사용할 수 있습니다. GetResponseStream 메서드를 호출하면 이 스트림에 액세스할 수 있습니다. 자세한 내용은 FtpWebResponse를 참조하십시오.

Proxy 속성이 직접 설정되거나 구성 파일에 설정된 경우 FTP 서버와의 통신은 지정된 프록시를 통해 이루어집니다. 지정된 프록시가 HTTP 프록시이면 DownloadFile, ListDirectoryListDirectoryDetails 명령만 지원됩니다.

다운로드된 이진 콘텐츠, 즉 UseBinary 속성이 true로 설정된 DownloadFile 명령을 사용하여 받은 콘텐츠만 캐시됩니다.

가능한 경우 여러 FtpWebRequest에서 기존 연결을 다시 사용합니다.

FTP 프로토콜에 대한 자세한 내용은 http://www.rfc-editor.org/의 RFC 959, "File Transfer Protocol"을 참조하십시오.

다음 코드 예제에서는 FTP 서버에서 파일을 삭제하는 방법을 보여 줍니다.


public static bool DeleteFileOnServer(Uri serverUri)
{
    // The serverUri parameter should use the ftp:// scheme.
    // It contains the name of the server file that is to be deleted.
    // Example: ftp://contoso.com/someFile.txt.
    // 

    if (serverUri.Scheme != Uri.UriSchemeFtp)
    {
        return false;
    }
    // Get the object used to communicate with the server.
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
    request.Method = WebRequestMethods.Ftp.DeleteFile;

    FtpWebResponse response = (FtpWebResponse) request.GetResponse();
    Console.WriteLine("Delete status: {0}",response.StatusDescription);  
    response.Close();
    return true;
}


다음 코드 예제에서는 WebClient 클래스를 사용하여 FTP 서버에서 파일을 다운로드하는 방법을 보여 줍니다.


public static bool DisplayFileFromServer(Uri serverUri)
{
    // The serverUri parameter should start with the ftp:// scheme.
    if (serverUri.Scheme != Uri.UriSchemeFtp)
    {
        return false;
    }
    // Get the object used to communicate with the server.
    WebClient request = new WebClient();

    // This example assumes the FTP site uses anonymous logon.
    request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");
    try 
    {
        byte [] newFileData = request.DownloadData (serverUri.ToString());
        string fileString = System.Text.Encoding.UTF8.GetString(newFileData);
        Console.WriteLine(fileString);
    }
    catch (WebException e)
    {
        Console.WriteLine(e.ToString());
    }
    return true;
}


다음 코드 예제에서는 비동기 작업을 사용하여 FTP 서버에 파일을 업로드하는 방법을 보여 줍니다.


using System;
using System.Net;
using System.Threading;

using System.IO;
namespace Examples.System.Net
{
    public class FtpState
    {
        private ManualResetEvent wait;
        private FtpWebRequest request;
        private string fileName;
        private Exception operationException = null;
        string status;

        public FtpState()
        {
            wait = new ManualResetEvent(false);
        }

        public ManualResetEvent OperationComplete
        {
            get {return wait;}
        }

        public FtpWebRequest Request
        {
            get {return request;}
            set {request = value;}
        }

        public string FileName
        {
            get {return fileName;}
            set {fileName = value;}
        }
        public Exception OperationException
        {
            get {return operationException;}
            set {operationException = value;}
        }
        public string StatusDescription
        {
            get {return status;}
            set {status = value;}
        }
    }
    public class AsynchronousFtpUpLoader
    {  
        // Command line arguments are two strings:
        // 1. The url that is the name of the file being uploaded to the server.
        // 2. The name of the file on the local machine.
        //
        public static void Main(string[] args)
        {
            // Create a Uri instance with the specified URI string.
            // If the URI is not correctly formed, the Uri constructor
            // will throw an exception.
            ManualResetEvent waitObject;

            Uri target = new Uri (args[0]);
            string fileName = args[1];
            FtpState state = new FtpState();
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(target);
            request.Method = WebRequestMethods.Ftp.UploadFile;

            // This example uses anonymous logon.
            // The request is anonymous by default; the credential does not have to be specified. 
            // The example specifies the credential only to
            // control how actions are logged on the server.

            request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");

            // Store the request in the object that we pass into the
            // asynchronous operations.
            state.Request = request;
            state.FileName = fileName;

            // Get the event to wait on.
            waitObject = state.OperationComplete;

            // Asynchronously get the stream for the file contents.
            request.BeginGetRequestStream(
                new AsyncCallback (EndGetStreamCallback), 
                state
            );

            // Block the current thread until all operations are complete.
            waitObject.WaitOne();

            // The operations either completed or threw an exception.
            if (state.OperationException != null)
            {
                throw state.OperationException;
            }
            else
            {
                Console.WriteLine("The operation completed - {0}", state.StatusDescription);
            }
        }
        private static void EndGetStreamCallback(IAsyncResult ar)
        {
            FtpState state = (FtpState) ar.AsyncState;

            Stream requestStream = null;
            // End the asynchronous call to get the request stream.
            try
            {
                requestStream = state.Request.EndGetRequestStream(ar);
                // Copy the file contents to the request stream.
                const int bufferLength = 2048;
                byte[] buffer = new byte[bufferLength];
                int count = 0;
                int readBytes = 0;
                FileStream stream = File.OpenRead(state.FileName);
                do
                {
                    readBytes = stream.Read(buffer, 0, bufferLength);
                    requestStream.Write(buffer, 0, readBytes);
                    count += readBytes;
                }
                while (readBytes != 0);
                Console.WriteLine ("Writing {0} bytes to the stream.", count);
                // IMPORTANT: Close the request stream before sending the request.
                requestStream.Close();
                // Asynchronously get the response to the upload request.
                state.Request.BeginGetResponse(
                    new AsyncCallback (EndGetResponseCallback), 
                    state
                );
            } 
            // Return exceptions to the main application thread.
            catch (Exception e)
            {
                Console.WriteLine("Could not get the request stream.");
                state.OperationException = e;
                state.OperationComplete.Set();
                return;
            }

        }

        // The EndGetResponseCallback method  
        // completes a call to BeginGetResponse.
        private static void EndGetResponseCallback(IAsyncResult ar)
        {
            FtpState state = (FtpState) ar.AsyncState;
            FtpWebResponse response = null;
            try 
            {
                response = (FtpWebResponse) state.Request.EndGetResponse(ar);
                response.Close();
                state.StatusDescription = response.StatusDescription;
                // Signal the main application thread that 
                // the operation is complete.
                state.OperationComplete.Set();
            }
            // Return exceptions to the main application thread.
            catch (Exception e)
            {
                Console.WriteLine ("Error getting response.");
                state.OperationException = e;
                state.OperationComplete.Set();
            }
        }
    }
}


.NET Framework

4.5, 4, 3.5, 3.0, 2.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원
  • WebPermission 

    이 요청에서 참조하는 리소스에 액세스하는 데 필요한 권한입니다. 연관된 열거형: Connect

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(서버 코어 역할은 지원되지 않음), Windows Server 2008 R2(서버 코어 역할은 SP1 이상에서 지원, Itanium은 지원되지 않음)

.NET Framework 에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 다음을 참조하십시오. .NET Framework 시스템 요구 사항.
이 형식의 static(Visual Basic의 경우 Shared) 모든 공용 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.
이 정보가 도움이 되었습니까?
(1500자 남음)
의견을 주셔서 감사합니다.

커뮤니티 추가 항목

추가
표시:
© 2014 Microsoft. All rights reserved.