FtpWebRequest.ContentOffset Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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.