Partager via


FtpWebRequest.GetRequestStream Méthode

Définition

Récupère le flux utilisé pour télécharger des données vers un serveur FTP.

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

Retours

Instance de Stream accessible en écriture utilisée pour stocker les données que la demande actuelle doit envoyer au serveur.

Exceptions

BeginGetRequestStream(AsyncCallback, Object) a été appelé et n'est pas terminé.

- ou -

Un proxy HTTP est activé, et vous avez tenté d'utiliser une commande FTP autre que DownloadFile, ListDirectory ou ListDirectoryDetails.

Une connexion au serveur FTP n'a pas pu être établie.

La propriété Method n'a pas la valeur UploadFile ou AppendFile.

Exemples

L’exemple de code suivant illustre la copie d’un fichier dans le flux de données d’une demande et l’envoi d’une demande au serveur pour charger les données et les ajouter à un fichier.

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

Remarques

Définissez les propriétés de la requête avant d’appeler la GetRequestStream méthode. Après avoir écrit les données dans le flux, vous devez fermer le flux avant d’envoyer la demande.

Si vous n’avez pas défini la Method propriété sur UploadFile ou AppendFile, vous ne pouvez pas obtenir le flux.

GetRequestStream bloque en attendant le flux. Pour éviter cela, appelez la méthode à la BeginGetRequestStream place de GetRequestStream.

Notes

Ce membre génère des informations de traçage lorsque vous activez le traçage réseau dans votre application. Pour plus d’informations, consultez Suivi réseau dans .NET Framework.

Notes pour les appelants

Cette méthode génère du trafic réseau.

S’applique à

Voir aussi