이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

FtpWebRequest 클래스

 

게시 날짜: 2016년 11월

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

네임스페이스:   System.Net
어셈블리:  System(System.dll에 있음)

System.Object
  System.MarshalByRefObject
    System.Net.WebRequest
      System.Net.FtpWebRequest

public sealed class FtpWebRequest : WebRequest

이름설명
System_CAPS_pubpropertyAuthenticationLevel

이 요청에 사용되는 인증 및 가장 수준을 나타내는 값을 가져오거나 설정합니다.(WebRequest에서 상속됨)

System_CAPS_pubpropertyCachePolicy

이 요청에 대한 캐시 정책을 가져오거나 설정합니다.(WebRequest에서 상속됨)

System_CAPS_pubpropertyClientCertificates

FTP 서버에 대해 암호화된 연결을 설정하는 데 사용되는 자격 증명을 가져오거나 설정합니다.

System_CAPS_pubpropertyConnectionGroupName

현재 요청을 보내는 데 사용되는 서비스 지점이 들어 있는 연결 그룹의 이름을 가져오거나 설정합니다.(WebRequest.ConnectionGroupName을(를) 재정의함)

System_CAPS_pubpropertyContentLength

이 API는 제품 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. FtpWebRequest 클래스에서 무시되는 값을 가져오거나 설정합니다.(WebRequest.ContentLength을(를) 재정의함)

System_CAPS_pubpropertyContentOffset

이 요청으로 다운로드할 파일의 바이트 오프셋을 가져오거나 설정합니다.

System_CAPS_pubpropertyContentType

이 API는 제품 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. 항상 NotSupportedException을 throw합니다.(WebRequest.ContentType을(를) 재정의함)

System_CAPS_pubpropertyCreatorInstance

사용되지 않습니다.하위 클래스에서 재정의될 때, 지정된 URI 에 요청하기 위해 인스턴스화된 WebRequest를 만드는 데 사용되는 IWebRequestCreate 클래스에서 파생된 팩터리 개체를 가져옵니다.(WebRequest에서 상속됨)

System_CAPS_pubpropertyCredentials

FTP 서버와 통신하는 데 사용되는 자격 증명을 가져오거나 설정합니다.(WebRequest.Credentials을(를) 재정의함)

System_CAPS_pubpropertySystem_CAPS_staticDefaultCachePolicy

모든 FTP 요청에 대한 기본 캐시 정책을 정의합니다.

System_CAPS_pubpropertyEnableSsl

SSL 연결 사용 여부를 지정하는 Boolean을 가져오거나 설정합니다.

System_CAPS_pubpropertyHeaders

이 API는 제품 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. WebHeaderCollection 개체를 가져옵니다.(WebRequest.Headers을(를) 재정의함)

System_CAPS_pubpropertyImpersonationLevel

현재 요청에 대한 가장 수준을 가져오거나 설정합니다.(WebRequest에서 상속됨)

System_CAPS_pubpropertyKeepAlive

FTP 서버에 대한 제어 연결이 요청 완료 후 닫히는지 여부를 지정하는 Boolean 값을 가져오거나 설정합니다.

System_CAPS_pubpropertyMethod

FTP 서버에 보낼 명령을 가져오거나 설정합니다.(WebRequest.Method을(를) 재정의함)

System_CAPS_pubpropertyPreAuthenticate

이 API는 제품 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. 항상 NotSupportedException을 throw합니다.(WebRequest.PreAuthenticate을(를) 재정의함)

System_CAPS_pubpropertyProxy

FTP 서버와 통신하는 데 사용되는 프록시를 가져오거나 설정합니다.(WebRequest.Proxy을(를) 재정의함)

System_CAPS_pubpropertyReadWriteTimeout

스트림을 읽거나 쓸 때의 제한 시간을 가져오거나 설정합니다.

System_CAPS_pubpropertyRenameTo

이름을 바꿀 파일의 새 이름을 가져오거나 설정합니다.

System_CAPS_pubpropertyRequestUri

이 인스턴스에서 요청한 URI를 가져옵니다.(WebRequest.RequestUri을(를) 재정의함)

System_CAPS_pubpropertyServicePoint

FTP 서버에 연결하는 데 사용되는 ServicePoint 개체를 가져옵니다.

System_CAPS_pubpropertyTimeout

요청 대기 시간(밀리초)을 가져오거나 설정합니다.(WebRequest.Timeout을(를) 재정의함)

System_CAPS_pubpropertyUseBinary

파일 전송을 위한 데이터 형식을 지정하는 Boolean 값을 가져오거나 설정합니다.

System_CAPS_pubpropertyUseDefaultCredentials

이 API는 제품 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. 항상 NotSupportedException을 throw합니다.(WebRequest.UseDefaultCredentials을(를) 재정의함)

System_CAPS_pubpropertyUsePassive

클라이언트 응용 프로그램의 데이터 전송 프로세스에 대한 동작을 가져오거나 설정합니다.

이름설명
System_CAPS_pubmethodAbort()

비동기 FTP 작업을 종료합니다.(WebRequest.Abort()을(를) 재정의함)

System_CAPS_pubmethodBeginGetRequestStream(AsyncCallback, Object)

요청의 콘텐츠 스트림을 쓰기 위해 비동기적으로 여는 작업을 시작합니다.(WebRequest.BeginGetRequestStream(AsyncCallback, Object)을(를) 재정의함)

System_CAPS_pubmethodBeginGetResponse(AsyncCallback, Object)

비동기적으로 FTP 서버에 요청을 보내고 응답을 받는 작업을 시작합니다.(WebRequest.BeginGetResponse(AsyncCallback, Object)을(를) 재정의함)

System_CAPS_pubmethodCreateObjRef(Type)

원격 개체와 통신 하는 데 사용 하 여 프록시를 생성 하는 데 필요한 모든 관련 정보를 포함 하는 개체를 만듭니다.(MarshalByRefObject에서 상속됨)

System_CAPS_pubmethodEndGetRequestStream(IAsyncResult)

BeginGetRequestStream으로 시작된 보류 중인 비동기 작업을 종료합니다.(WebRequest.EndGetRequestStream(IAsyncResult)을(를) 재정의함)

System_CAPS_pubmethodEndGetResponse(IAsyncResult)

BeginGetResponse으로 시작된 보류 중인 비동기 작업을 종료합니다.(WebRequest.EndGetResponse(IAsyncResult)을(를) 재정의함)

System_CAPS_pubmethodEquals(Object)

지정한 개체가 현재 개체와 같은지 여부를 확인합니다. (Object에서 상속됨)

System_CAPS_pubmethodGetHashCode()

기본 해시 함수로 작동합니다.(Object에서 상속됨)

System_CAPS_pubmethodGetLifetimeService()

이 인스턴스에 대 한 수명 정책을 제어 하는 현재 수명 서비스 개체를 검색 합니다.(MarshalByRefObject에서 상속됨)

System_CAPS_pubmethodGetRequestStream()

데이터를 FTP 서버에 업로드하는 데 사용되는 스트림을 검색합니다.(WebRequest.GetRequestStream()을(를) 재정의함)

System_CAPS_pubmethodGetRequestStreamAsync()

서브클래스에서 재정의될 때, 인터넷 리소스에 비동기 작업으로 데이터를 쓰기 위해 Stream을 반환합니다.(WebRequest에서 상속됨)

System_CAPS_pubmethodGetResponse()

FTP 서버 응답을 반환합니다.(WebRequest.GetResponse()을(를) 재정의함)

System_CAPS_pubmethodGetResponseAsync()

하위 항목 클래스에 재정의될 때, 인터넷 요청에 대한 응답을 비동기 작업으로 반환합니다.(WebRequest에서 상속됨)

System_CAPS_pubmethodGetType()

현재 인스턴스의 Type을 가져옵니다.(Object에서 상속됨)

System_CAPS_pubmethodInitializeLifetimeService()

이 인스턴스에 대 한 수명 정책을 제어 하는 수명 서비스 개체를 가져옵니다.(MarshalByRefObject에서 상속됨)

System_CAPS_pubmethodToString()

현재 개체를 나타내는 문자열을 반환합니다.(Object에서 상속됨)

이름설명
System_CAPS_pubinterfaceSystem_CAPS_privmethodISerializable.GetObjectData(SerializationInfo, StreamingContext)

이 API는 제품 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. 서브클래스에서 재정의될 때, WebRequest를 serialize하는 데 필요한 데이터로 SerializationInfo 인스턴스를 채웁니다.(WebRequest에서 상속됨)

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

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

유효한 사용자 이름을 지정 해야 하 고 암호는 서버 또는 서버에 대 한 익명 로그온을 허용 해야 합니다. 설정 하 여 서버에 연결 하는 데 사용 되는 자격 증명을 지정할 수 있습니다는 Credentials 속성에 포함할 수는 UserInfo URI의 부분에 전달 되는 Create 메서드. 포함 하는 경우 UserInfo 은 URI에 대 한 정보는 Credentials 속성을 지정 된 사용자 이름 및 암호 정보로 새 네트워크 자격 증명을로 설정 합니다.

System_CAPS_caution주의

하지 않는 한는 EnableSsl 속성은 true, 모든 데이터와 명령을, 사용자 이름 및 암호 정보를 포함 하 여 서버에 일반 텍스트로 전송 됩니다. 네트워크 트래픽을 모니터링 하는 모든 자격 증명을 볼 하 고 사용 하는 서버에 연결할 수 있습니다. Secure Sockets Layer (SSL)를 지원 하 고 자격 증명을 요구 하는 FTP 서버에 연결 하는 경우 설정 해야 EnableSsltrue합니다.

있어야 WebPermission 리소스에 액세스할 때 FTP; 그렇지 않으면는 SecurityException 예외가 throw 됩니다.

설정 하 여 서버에 보낼 FTP 명령을 지정는 Method 속성에 정의 된 값은 WebRequestMethods.Ftp 구조입니다. 텍스트 데이터를 전송 하려면 변경에서 UseBinary 기본값에서 속성 (true)를 false합니다. 자세한 내용 및 제한 사항 참조 Method합니다.

사용 하는 경우는 FtpWebRequest 개체는 서버에 파일을 업로드 하려면 파일 콘텐츠를 호출 하 여 얻은 요청 스트림에 작성 해야는 GetRequestStream 메서드 또는 해당 비동기 메서드인은 BeginGetRequestStreamEndGetRequestStream 메서드. 스트림에 쓸 하며 요청을 보내기 전에 스트림을 닫습니다.

호출 하 여 서버에 요청이 전송 되는 GetResponse 메서드 또는 해당 비동기 메서드인은 BeginGetResponseEndGetResponse 메서드. 요청 된 작업이 완료 되 면는 FtpWebResponse 개체가 반환 됩니다. FtpWebResponse 개체는 서버에서 다운로드 한 모든 데이터 및 작업의 상태를 제공 합니다.

읽기 또는 쓰기 서버를 사용 하 여 시간 제한 값을 설정할 수는 ReadWriteTimeout 속성입니다. 제한 시간 초과 되 면 호출 하는 메서드에서 throw 한 WebExceptionWebExceptionStatus 로 설정 Timeout합니다.

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

하는 경우는 Proxy 속성을 설정 하거나 직접 또는 구성 파일에 지정된 된 프록시를 통해 FTP 서버와의 통신 이루어집니다. 지정된 된 프록시만 HTTP 프록시를 인지는 DownloadFile, ListDirectory, 및 ListDirectoryDetails 명령이 지원 됩니다.

이진 콘텐츠를 다운로드 하는 전용 캐시 됩니다. 즉, 콘텐츠를 사용 하 여 받은 DownloadFile 명령에 UseBinary 속성으로 설정 true합니다.

여러 FtpWebRequests 가능 하면 기존 연결을 사용 합니다.

FTP 프로토콜에 대 한 자세한 내용은 RFC 959, "파일 전송 프로토콜,"에서 사용 가능한 참조 http://www.rfc-editor.org/합니다.

다음 코드 예제에서는 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;
}

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

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();
            }
        }
    }
}

WebPermission

for accessing the resource referenced by this request. Associated enumeration: F:System.Net.NetworkAccess.Connect.

.NET Framework
2.0 이후 사용 가능

이 형식의 모든 public static(Visual Basic의 공유 Visual Basic의 경우) 멤버는 스레드로부터 안전합니다. 인스턴스 멤버는 스레드로부터의 안전이 보장되지 않습니다.

맨 위로 이동
표시: