Aracılığıyla paylaş


FtpWebRequest.ContentOffset Özellik

Tanım

Bu istek tarafından indirilen dosyaya bir bayt uzaklığı alır veya ayarlar.

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

Özellik Değeri

Int64 Bayt cinsinden dosya uzaklığını belirten bir örnek. Varsayılan değer sıfırdır.

Özel durumlar

Devam etmekte olan bir istek için bu özellik için yeni bir değer belirtildi.

Bu özellik için belirtilen değer sıfırdan küçük.

Örnekler

Aşağıdaki kod örneği, bir dosyanın bir kısmını sunucudan indirmeyi ve indirilen verileri yerel bir dosyaya eklemeyi gösterir.

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

Açıklamalar

FTP sunucusundan ContentOffset dosya indirirken özelliğini ayarlayın. Bu uzaklık, sunucunun dosyasındaki indirilecek verilerin başlangıcını işaretleyen konumu gösterir. Uzaklık, dosyanın başından itibaren bayt sayısı olarak belirtilir; İlk baysın uzaklığı sıfırdır.

Ayarı ContentOffset , komutunun FtpWebRequest sunucuya yeniden başlatma (REST) komutu göndermesine neden olur. Verileri sunucuya yüklüyorsanız, bu komut çoğu FTP sunucusu uygulaması tarafından yoksayılır.

, , GetResponseBeginGetRequestStreamveya BeginGetResponse yöntemi çağrıldıktan GetRequestStreamsonra değiştirilmesi ContentOffset özel duruma InvalidOperationException neden olur.

Şunlara uygulanır

Ayrıca bkz.