FtpWebRequest.ContentOffset Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene o imposta un offset di byte nel file che viene scaricato da questa richiesta.
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
Valore della proprietà
Istanza di Int64 che specifica l'offset del file in byte. Il valore predefinito è zero.
Eccezioni
È stato specificato un nuovo valore per questa proprietà per una richiesta già in corso.
Il valore specificato per la proprietà è minore di zero.
Esempio
Nell'esempio di codice seguente viene illustrato il download di parte di un file da un server e l'aggiunta dei dati scaricati a un file locale.
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;
}
Commenti
Impostare la proprietà durante il ContentOffset download di un file da un server FTP. Questo offset indica la posizione nel file del server che contrassegna l'inizio dei dati da scaricare. L'offset viene specificato come numero di byte dall'inizio del file; l'offset del primo byte è zero.
L'impostazione ContentOffset determina l'invio FtpWebRequest di un comando di riavvio (REST
) al server. Questo comando viene ignorato dalla maggior parte delle implementazioni del server FTP se si caricano dati nel server.
La modifica ContentOffset dopo la chiamata al GetRequestStreammetodo , BeginGetRequestStreamGetResponse, o BeginGetResponse causa un'eccezioneInvalidOperationException.