Click to Rate and Give Feedback
TechNet
TechNet Library
Collapse All/Expand All Collapse All
This page is specific to
Microsoft Visual Studio 2010/.NET Framework 4

Other versions are also available for the following:
.NET Framework Class Library
FtpWebRequest..::.GetRequestStream Method

Retrieves the stream used to upload data to an FTP server.

Namespace:  System.Net
Assembly:  System (in System.dll)
Visual Basic
Public Overrides Function GetRequestStream As Stream
C#
public override Stream GetRequestStream()
Visual C++
public:
virtual Stream^ GetRequestStream() override
F#
abstract GetRequestStream : unit -> Stream 
override GetRequestStream : unit -> Stream 

Return Value

Type: System.IO..::.Stream
A writable Stream instance used to store data to be sent to the server by the current request.
ExceptionCondition
InvalidOperationException

BeginGetRequestStream has been called and has not completed.

- or -

An HTTP proxy is enabled, and you attempted to use an FTP command other than WebRequestMethods..::.Ftp..::.DownloadFile, WebRequestMethods..::.Ftp..::.ListDirectory, or WebRequestMethods..::.Ftp..::.ListDirectoryDetails.

WebException

A connection to the FTP server could not be established.

ProtocolViolationException

The Method property is not set to WebRequestMethods..::.Ftp..::.UploadFile or WebRequestMethods..::.Ftp..::.AppendFile.

Set the request properties before calling the GetRequestStream method. After writing the data to the stream, you must close the stream prior to sending the request.

If you have not set the Method property to UploadFile or AppendFile, you cannot get the stream.

GetRequestStream blocks while waiting for the stream. To prevent this, call the BeginGetRequestStream method in place of GetRequestStream.

NoteNote

This member outputs trace information when you enable network tracing in your application. For more information, see Network Tracing.

Notes to Callers

This method generates network traffic.

The following code example demonstrates copying a file to a request's data stream and sending a request to the server to upload the data and append it to a file.

Visual Basic
Public Shared Function AppendFileOnServer(ByVal fileName As String, ByVal serverUri As Uri) As Boolean
    ' The URI described by serverUri should use the ftp:// scheme.
    ' It contains the name of the file on the server.
    ' Example: ftp://contoso.com/someFile.txt. 
    ' The fileName parameter identifies the file containing 
    ' the data to be appended to the file on the server.

    If serverUri.Scheme <> Uri.UriSchemeFtp Then
        Return False
    End If
    ' Get the object used to communicate with the server.
    Dim request As FtpWebRequest = CType(WebRequest.Create(serverUri), FtpWebRequest)
    request.Method = WebRequestMethods.Ftp.AppendFile

    Dim sourceStream As New StreamReader(fileName)
    Dim fileContents() As Byte = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd())
    sourceStream.Close()
    request.ContentLength = fileContents.Length

    ' This example assumes the FTP site uses anonymous logon.
    request.Credentials = New NetworkCredential("anonymous", "janeDoe@contoso.com")
    Dim requestStream As Stream = request.GetRequestStream()
    requestStream.Write(fileContents, 0, fileContents.Length)
    requestStream.Close()
    Dim response As FtpWebResponse = CType(request.GetResponse(), FtpWebResponse)

    Console.WriteLine("Append status: {0}", response.StatusDescription)

    response.Close()
    Return True
End Function
C#
public static bool AppendFileOnServer(string fileName, Uri serverUri)
{
    // The URI described by serverUri should use the ftp:// scheme.
    // It contains the name of the file on the server.
    // Example: ftp://contoso.com/someFile.txt. 
    // The fileName parameter identifies the file containing 
    // the data to be appended to the file on the server.

    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.AppendFile;

    StreamReader sourceStream = new StreamReader(fileName);
    byte [] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
    sourceStream.Close();
    request.ContentLength = fileContents.Length;

    // This example assumes the FTP site uses anonymous logon.
    request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");
    Stream requestStream = request.GetRequestStream();
    requestStream.Write(fileContents, 0, fileContents.Length);
    requestStream.Close();
    FtpWebResponse response = (FtpWebResponse) request.GetResponse();

    Console.WriteLine("Append status: {0}",response.StatusDescription);

    response.Close();  
    return true;
}
Visual C++
static bool AppendFileOnServer( String^ fileName, Uri^ serverUri )
{
   // The URI described by serverUri should use the ftp:// scheme.
   // It contains the name of the file on the server.
   // Example: ftp://contoso.com/someFile.txt. 
   // The fileName parameter identifies the file containing 
   // the data to be appended to the file on the server.
   if ( serverUri->Scheme != Uri::UriSchemeFtp )
   {
      return false;
   }

   // Get the object used to communicate with the server.
   FtpWebRequest^ request = dynamic_cast<FtpWebRequest^>(WebRequest::Create( serverUri ));
   request->Method = WebRequestMethods::Ftp::AppendFile;
   StreamReader^ sourceStream = gcnew StreamReader( fileName );
   array<Byte>^fileContents = Encoding::UTF8->GetBytes( sourceStream->ReadToEnd() );
   sourceStream->Close();
   request->ContentLength = fileContents->Length;

   // This example assumes the FTP site uses anonymous logon.
   request->Credentials = gcnew NetworkCredential( "anonymous","janeDoe@contoso.com" );
   Stream^ requestStream = request->GetRequestStream();
   requestStream->Write( fileContents, 0, fileContents->Length );
   requestStream->Close();
   FtpWebResponse^ response = dynamic_cast<FtpWebResponse^>(request->GetResponse());
   Console::WriteLine( "Append status: {0}", response->StatusDescription );
   response->Close();
   return true;
}

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Double slashes required for some servers      RobinGBRown   |   Edit   |   Show History
Note that the URI for some servers needs to have double slashes after the server name like this 'ftp://servername//directoryname/filename' and not 'ftp://servername/directoryname/filename'.

See http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/8caa2570-f185-4c31-91b3-940ab7c7c3a2 for example of problem.
Tags What's this?: Add a tag
Flag as ContentBug
Processing
© 2012 Microsoft. All rights reserved. Terms of Use | Trademarks | Privacy Statement
Page view tracker