FtpWebRequest.ContentOffset Eigenschaft

Definition

Ruft einen Byteoffset für die durch diese Anforderung heruntergeladene Datei ab oder legt diesen fest.Gets or sets a byte offset into the file being downloaded by this request.

public:
 property long ContentOffset { long get(); void set(long value); };
public long ContentOffset { get; set; }
member this.ContentOffset : int64 with get, set
Public Property ContentOffset As Long

Eigenschaftswert

Eine Int64-Instanz, die den Dateioffset in Bytes angibt.An Int64 instance that specifies the file offset, in bytes. Der Standardwert ist 0 (null).The default value is zero.

Ausnahmen

Für diese Eigenschaft wurde ein neuer Wert für eine Anforderung angegeben, die bereits ausgeführt wird.A new value was specified for this property for a request that is already in progress.

Der für diese Eigenschaft angegebene Wert ist kleiner als 0 (null).The value specified for this property is less than zero.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie ein Teil einer Datei von einem Server heruntergeladen und die heruntergeladenen Daten an eine lokale Datei angehängt werden.The following code example demonstrates downloading part of a file from a server and appending the downloaded data to a local file.

public:
   // NOT Working - throws a protocolError - 350 Restarting at 8. for args shown in Main.
   static bool RestartDownloadFromServer( String^ fileName, Uri^ serverUri, long offset )
   {
      // The serverUri parameter should use the ftp:// scheme.
      // It identifies the server file that is to be appended.
      // Example: ftp://contoso.com/someFile.txt.
      // 
      // The fileName parameter identifies the local file
      //
      // The offset parameter specifies where in the server file to start reading data.
      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::DownloadFile;
      request->ContentOffset = offset;
      FtpWebResponse^ response = nullptr;
      try
      {
         response = dynamic_cast<FtpWebResponse^>(request->GetResponse());
      }
      catch ( WebException^ e ) 
      {
         Console::WriteLine( e->Status );
         Console::WriteLine( e->Message );
         return false;
      }

      Stream^ newFile = response->GetResponseStream();
      StreamReader^ reader = gcnew StreamReader( newFile );

      // Display downloaded data.
      String^ newFileData = reader->ReadToEnd();

      // Append the response data to the local file
      // using a StreamWriter.
      StreamWriter^ writer = File::AppendText(fileName);
      writer->Write(newFileData);

     // Display the status description.

     // Cleanup.
     writer->Close();
     reader->Close();
     response->Close();
     // string fileString = System.Text.Encoding.UTF8.GetString(newFileData);
     // Console::WriteLine( sr );
     Console::WriteLine("Download restart - status: {0}",response->StatusDescription);
     return true;
   }
public static bool RestartDownloadFromServer(string fileName, Uri serverUri, long offset)
{
    // The serverUri parameter should use the ftp:// scheme.
    // It identifies the server file that is to be downloaded
    // Example: ftp://contoso.com/someFile.txt.

    // The fileName parameter identifies the local file.
    //The serverUri parameter identifies the remote file.
    // The offset parameter specifies where in the server file to start reading data.
    
    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.DownloadFile;
    request.ContentOffset = offset;
    FtpWebResponse response = null;
    try 
    {
        response = (FtpWebResponse) request.GetResponse();
    }
    catch (WebException e)
    {
        Console.WriteLine (e.Status);
        Console.WriteLine (e.Message);
        return false;
    }
    // Get the data stream from the response.
    Stream newFile = response.GetResponseStream();
    // Use a StreamReader to simplify reading the response data.
    StreamReader reader  = new StreamReader(newFile);
    string newFileData = reader.ReadToEnd();
    // Append the response data to the local file
    // using a StreamWriter.
    StreamWriter writer = File.AppendText(fileName);
    writer.Write(newFileData);
    // Display the status description.

    // Cleanup.
    writer.Close();
    reader.Close();
    response.Close();
    Console.WriteLine("Download restart - status: {0}",response.StatusDescription);
    return true;
}

Hinweise

Legen Sie beim Herunterladen einer Datei von einem FTP-Server die ContentOffset-Eigenschaft fest.Set the ContentOffset property when downloading a file from an FTP server. Dieser Offset gibt die Position in der Datei des Servers an, die den Anfang der herunter zuladenden Daten markiert.This offset indicates the position in the server's file that marks the start of the data to be downloaded. Der Offset wird als die Anzahl der Bytes vom Anfang der Datei angegeben. der Offset des ersten Bytes ist 0 (null).The offset is specified as the number of bytes from the start of the file; the offset of the first byte is zero.

Das Festlegen von ContentOffset bewirkt, dass der FtpWebRequest einen Neustart Befehl (REST) an den Server sendet.Setting ContentOffset causes the FtpWebRequest to send a restart (REST) command to the server. Dieser Befehl wird von den meisten FTP-Server Implementierungen ignoriert, wenn Sie Daten auf den Server hochladen.This command is ignored by most FTP server implementations if you are uploading data to the server.

Das Ändern von ContentOffset nach dem Aufrufen der Methoden GetRequestStream, BeginGetRequestStream, GetResponseoder BeginGetResponse verursacht eine InvalidOperationException Ausnahme.Changing ContentOffset after calling the GetRequestStream, BeginGetRequestStream, GetResponse, or BeginGetResponse method causes an InvalidOperationException exception.

Gilt für:

Siehe auch