FtpWebRequest.ContentOffset プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
この要求でダウンロードされるファイル内のバイト オフセットを取得または設定します。
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
プロパティ値
ファイルのオフセットをバイト単位で指定する Int64 インスタンス。 既定値はゼロです。
例外
既に処理中の要求で、このプロパティに対して新しい値が指定されました。
このプロパティに対して指定された値が 0 未満です。
例
次のコード例では、サーバーからファイルの一部をダウンロードし、ダウンロードしたデータをローカル ファイルに追加する方法を示します。
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;
}
注釈
ContentOffset FTP サーバーからファイルをダウンロードするときに、 プロパティを設定します。 このオフセットは、ダウンロードするデータの開始を示すサーバーのファイル内の位置を示します。 オフセットは、ファイルの先頭からのバイト数として指定されます。最初のバイトのオフセットは 0 です。
を設定 ContentOffset すると、 は FtpWebRequest 再起動 (REST
) コマンドをサーバーに送信します。 このコマンドは、サーバーにデータをアップロードする場合、ほとんどの FTP サーバー実装では無視されます。
、BeginGetRequestStreamGetResponse、または BeginGetResponse メソッドを呼び出した後に GetRequestStreamを変更ContentOffsetすると、例外がInvalidOperationException発生します。
適用対象
こちらもご覧ください
.NET