Przejdź do głównej zawartości
Pomoc techniczna
Zaloguj się przy użyciu konta Microsoft
Zaloguj się lub utwórz konto.
Witaj,
Wybierz inne konto.
Masz wiele kont
Wybierz konto, za pomocą którego chcesz się zalogować.

WPROWADZENIE

W tym artykule opisano próbki framework All-in-One, który jest dostępny do pobrania. Ten przykładowy kod ilustruje przekazywania i pobierania plików z serwera zdalnego lub lokalnego w programie ASP.NET. Przykładowe pakiety można pobrać z następujących ikon pobierania. Dostępne są zarówno C# i Visual Basic .NET wersji językowych pakietu próbki.


Ten przykładowy kod ilustruje przekazywania i pobierania plików z serwera, który nie jest w zakresie domeny żądania użytkownika. Funkcja jest przewidziane transferu plików przy użyciu protokołów HTTP i FTP. Ten przykładowy kod używa również, Uniform Resource Identifier (URI) do identyfikowania lokalizacji plików na serwerze. Klucza klas używanych w tym przykładowym kodzie są WebClient klasy oraz klasy WebRequest .

Poziom trudności




alternate text

Pobieranie informacji

Aby pobrać ten przykładowy kod, kliknij jedno z następujących łączy:

Opis techniczny

Jest to dość łatwe do przekazywania i pobierania plików z serwera zdalnego w programie ASP.NET. Biblioteka klas.NET Framework zawiera niektóre obiekty lekkie żądania. Klasa usługi WebClient jest wysokiego poziomu klasy, która ułatwia interakcje serwera. WebRequest obiektów są używane przez klasę usługi WebClient żądań. Klasy HttpWebRequest i FtpWebRequest są specyficzne dla protokołu implementacje klasy abstrakcyjnej klasy WebRequest . HttpWebRequest implementuje metody GET i POST protokołu HTTP do przekazywania i pobierania plików. FtpWebRequest implementuje STOR i RETR metody protokołu FTP do przekazywania i pobierania plików.


Ten kod przykładowy używa metody UploadData i DownloadData klasy WebClient do transferu danych do i z serwera zdalnego identyfikatora URI. Metoda jest używana z metody PUT protokołu HTTP i "aplikacja/x--www-form-urlencoded" Internet typu nośnika. Metoda jest używany z obiektem FileStream do przechowywania strumienia danych wejściowych i zapisywać tablicy bajtów do pliku lokalnego.

Przykładowa Przegląd

W tym kodzie przykładowym można znaleźć pliku RemoteFileForm.aspx, który wyjaśnia, jak używać dwie nowe klasy:

  • RemoteUpload

  • RemoteDownload

Klasa RemoteUpload

Klasa RemoteUpload zawiera dwie klasy podrzędnej. Te klasy są HttpRemoteUpload i FtpRemoteUpload. Obie klasy Użyj konstruktora RemoteUpload . Klasa RemoteUpload wymaga tablicy bajtów danych pliku i identyfikator URI serwera. Można również określić nazwę dla przekazanego pliku. Klasa FtpRemoteUpload używa FtpWebRequest (zamiast bezpośredniego wyższego poziomu WebClient klasy) do obsługi szczególne wymagania protokołu FTP.


Zobacz następujące definicje klasy, aby uzyskać więcej informacji na temat klasy RemoteUpload :
public class HttpRemoteUpload : RemoteUpload
{
public HttpRemoteUpload(byte[] fileData, string fileNamePath, string urlString)
: base(fileData, fileNamePath, urlString)
{

}

public override bool UploadFile()
{
byte[] postData;
try
{
postData = this.FileData;
using (WebClient client = new WebClient())
{
client.Credentials = CredentialCache.DefaultCredentials;
client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
client.UploadData(this.UrlString, "PUT", postData);
}

return true;
}
catch (Exception ex)
{
throw new Exception("Failed to upload", ex.InnerException);
}

}
}

public class FtpRemoteUpload : RemoteUpload
{
public FtpRemoteUpload(byte[] fileData, string fileNamePath, string urlString)
: base(fileData, fileNamePath, urlString)
{

}

public override bool UploadFile()
{
FtpWebRequest reqFTP;
reqFTP = (FtpWebRequest)FtpWebRequest.Create(this.UrlString);
reqFTP.KeepAlive = true;
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
reqFTP.UseBinary = true;
reqFTP.ContentLength = this.FileData.Length;

int buffLength = 2048;
byte[] buff = new byte[buffLength];
MemoryStream ms = new MemoryStream(this.FileData);

try
{
int contenctLength;
using (Stream strm = reqFTP.GetRequestStream())
{
contenctLength = ms.Read(buff, 0, buffLength);
while (contenctLength > 0)
{
strm.Write(buff, 0, contenctLength);
contenctLength = ms.Read(buff, 0, buffLength);
}
}

return true;
}
catch (Exception ex)
{
throw new Exception("Failed to upload", ex.InnerException);
}
}

} W pliku RemoteFileForm.cs po kliknięciu przycisku Prześlij tworzone jest wystąpienie obiektu RemoteUpload . Przekazać identyfikator URI serwera i ścieżkę do lokalnego pliku fizycznego jako parametry do utworzenia tego obiektu.


Uwaga Jeśli nie określisz nazwę pliku do przechowywania plików na serwerze, system automatycznie generuje nazwę pliku według bieżącej daty i godziny na serwerze. Data i godzina jest z dokładnością do milisekundy. Po zakończeniu pracy Metoda wynik jest wyświetlany na stronie bieżącej.

Klasa RemoteDownload

Klasa RemoteDownload również ma dwie klasy podrzędnej. Te klasy są HttpRemoteDownload i FtpRemoteDownload. Klasa RemoteDownload wymaga identyfikatora URI zasobu i lokalnego katalogu fizycznego. Klasa RemoteDownload sprawdza, aby upewnić się, że identyfikator URI zasobu istnieje przed pobraniem jest uruchomiona. Klasa pobiera strumienia, który zawiera dane odpowiedzi z serwera, a następnie zapisuje tej tablicy bajtów do FileStream. Klasa FtpRemoteDownload używa FtpWebRequest (zamiast bezpośredniego wyższego poziomu WebClient klasy) do obsługi szczególne wymagania protokołu FTP.


Zobacz następujące definicje klasy, aby uzyskać więcej informacji na temat klasy RemoteDownload :
public class HttpRemoteDownload : RemoteDownload
{
public HttpRemoteDownload(string urlString, string descFilePath)
: base(urlString, descFilePath)
{

}

public override bool DownloadFile()
{
string fileName = System.IO.Path.GetFileName(this.UrlString);
string descFilePathAndName =
System.IO.Path.Combine(this.DescFilePath, fileName);
try
{
WebRequest myre = WebRequest.Create(this.UrlString);
}
catch
{
return false;
}
try
{
byte[] fileData;
using (WebClient client = new WebClient())
{
fileData = client.DownloadData(this.UrlString);
}
using (FileStream fs =
new FileStream(descFilePathAndName, FileMode.OpenOrCreate))
{
fs.Write(fileData, 0, fileData.Length);
}
return true;
}
catch (Exception ex)
{
throw new Exception("download field", ex.InnerException);
}
}
}

public class FtpRemoteDownload : RemoteDownload
{
public FtpRemoteDownload(string urlString, string descFilePath)
: base(urlString, descFilePath)
{

}

public override bool DownloadFile()
{
FtpWebRequest reqFTP;

string fileName = System.IO.Path.GetFileName(this.UrlString);
string descFilePathAndName =
System.IO.Path.Combine(this.DescFilePath, fileName);

try
{

reqFTP = (FtpWebRequest)FtpWebRequest.Create(this.UrlString);
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
reqFTP.UseBinary = true;


using (FileStream outputStream = new FileStream(descFilePathAndName, FileMode.OpenOrCreate))
using (FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse())
using (Stream ftpStream = response.GetResponseStream())
{
int bufferSize = 2048;
int readCount;
byte[] buffer = new byte[bufferSize];
readCount = ftpStream.Read(buffer, 0, bufferSize);
while (readCount > 0)
{
outputStream.Write(buffer, 0, readCount);
readCount = ftpStream.Read(buffer, 0, bufferSize);
}
}
return true;
}

catch (Exception ex)
{
throw new Exception("upload failed", ex.InnerException);
}
}
}
Uwaga Aby uzyskać więcej informacji dotyczących sposobu tworzenia i wdrażania aplikacji przykładowej zobacz plik Readme.txt, który jest dołączony do pakietu pobierania.


Języki

Ten przykład kodu jest dostępny w następujących językach programowania:

Język

Nazwa projektu

Program Visual C#

CSRemoteUploadAndDownload

Visual Basic.NET

VRemoteUploadAndDownload

Technologia kategoria

  • PROGRAM ASP.NET 2.0

  • PROGRAM ASP.NET 3.5

  • PROGRAM ASP.NET 4.0

Powiązane artykuły

Aby uzyskać więcej informacji na temat klasy usługi WebClient odwiedź następującą witrynę Microsoft Developer (MSDN):

Ogólne informacje o klasie usługi WebClientAby uzyskać więcej informacji na temat Metoda odwiedź następującą witrynę MSDN:

Ogólne informacje dotyczące metodaAby uzyskać więcej informacji na temat metody DonwloadData odwiedź następującą witrynę MSDN:

Ogólne informacje dotyczące metody DonwloadDataAby uzyskać więcej informacji na temat metody FtpWebRequest odwiedź następującą witrynę MSDN:

Ogólne informacje dotyczące metody FtpWebRequestAby uzyskać więcej informacji dotyczących sposobu ładowania plików z FTP, odwiedź następującą witrynę MSDN:

Jak przesyłać pliki z FTP

Więcej informacji

Co to jest Dell All-in-One Code Framework?

Urządzenie wielofunkcyjne Dell All-in-One code Framework zawiera większość technik programistycznych firmy Microsoft przy użyciu próbki kodu w różnych językach programowania. Każdy przykład starannie jest zaznaczone, w składzie i udokumentowany w celu zaprezentowania typowym scenariuszem kodu. Aby uzyskać więcej informacji na temat All-in-One Code Framework odwiedź następujące witryny firmy Microsoft:

http://1code.codeplex.com

Jak znaleźć więcej próbek kodową All-in-One

Aby znaleźć więcej próbek kodową All-in-One, wyszukaj "kbcodefx" wraz z pokrewnych słów kluczowych w programie Microsoft obsługuje witrynę sieci Web. Lub odwiedź następujące witryny firmy Microsoft:

Urządzenie wielofunkcyjne Dell All-in-One code Framework próbek

Wyłączenie szybkiego publikowania

Firma Microsoft corporation ani jej dostawcy nie składają żadnych oświadczeń o przydatność, wiarygodność lub dokładności informacji i pokrewne grafiki zawarte w niniejszym dokumencie. Wszystkie takie informacje i ilustracje są dostarczane "tak jak są" bez jakiejkolwiek gwarancji. Firma Microsoft lub jej dostawcy niniejszym zrzekają się wszelkich gwarancji i warunków dotyczących tych informacji i związanych z grafiką, w tym wszelkie dorozumiane gwarancje przydatności handlowej, przydatności do określonego celu, łatwości obsługi wysiłku, tytułu i nienaruszalności. W szczególności zgadzasz się że w żadnym wypadku Microsoft lub jej dostawców ponosi odpowiedzialności za szkody bezpośrednie, pośrednie, karne, przypadkowe, specjalne, wtórne ani inne szkody tym, bez ograniczeń, utratę danych lub zyski wynikające z lub w jakikolwiek sposób związane z korzystania z lub niemożności korzystania z informacji i pokrewne grafiki zawarte w niniejszym dokumencie, na podstawie umowy, czynów niedozwolonych, zaniedbania, odpowiedzialności na zasadzie ryzyka lub w inny sposób, nawet jeśli został Microsoft lub którykolwiek z jej dostawców poinformowana o możliwości wystąpienia szkód.

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?
Jeśli naciśniesz pozycję „Wyślij”, Twoja opinia zostanie użyta do ulepszania produktów i usług firmy Microsoft. Twój administrator IT będzie mógł gromadzić te dane. Oświadczenie o ochronie prywatności.

Dziękujemy za opinię!

×