Freigeben über


FtpWebRequest.GetRequestStream Methode

Definition

Ruft den Stream ab, der zum Hochladen von Daten auf einen FTP-Server verwendet wird.

public:
 override System::IO::Stream ^ GetRequestStream();
public override System.IO.Stream GetRequestStream ();
override this.GetRequestStream : unit -> System.IO.Stream
Public Overrides Function GetRequestStream () As Stream

Gibt zurück

Eine nicht schreibgeschützte Stream-Instanz, die zum Speichern von Daten verwendet wird, die durch die aktuelle Anforderung an den Server gesendet werden.

Ausnahmen

BeginGetRequestStream(AsyncCallback, Object) wurde aufgerufen und nicht abgeschlossen.

- oder -

Ein HTTP-Proxy ist aktiviert, und Sie haben versucht, einen anderen FTP-Befehl als DownloadFile, ListDirectory oder ListDirectoryDetails zu verwenden.

Es konnte keine Verbindung mit dem FTP-Server hergestellt werden.

Die Method-Eigenschaft ist nicht auf UploadFile oder AppendFile festgelegt.

Beispiele

Das folgende Codebeispiel veranschaulicht das Kopieren einer Datei in den Datenstrom einer Anforderung und das Senden einer Anforderung an den Server, um die Daten hochzuladen und an eine Datei anzufügen.

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

Hinweise

Legen Sie die Anforderungseigenschaften vor dem Aufrufen der GetRequestStream -Methode fest. Nachdem Sie die Daten in den Stream geschrieben haben, müssen Sie den Stream schließen, bevor Sie die Anforderung senden.

Wenn Sie die Method Eigenschaft nicht auf UploadFile oder AppendFilefestgelegt haben, können Sie den Stream nicht abrufen.

GetRequestStream blockiert, während auf den Stream gewartet wird. Um dies zu verhindern, rufen Sie die BeginGetRequestStream -Methode anstelle von GetRequestStreamauf.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Hinweise für Aufrufer

Diese Methode generiert Netzwerkdatenverkehr.

Gilt für:

Weitere Informationen