Prihláste sa s kontom Microsoft
Prihláste sa alebo si vytvorte konto.
Dobrý deň,
Vyberte iné konto.
Máte viacero kont
Vyberte konto, s ktorým sa chcete prihlásiť.

ÚVOD

Tento článok popisuje v jednom rámca vzorky, ktorá je k dispozícii na prevzatie. Táto vzorka kódu ukazuje, ako upload a download súborov zo servera vzdialeného alebo lokálneho ASP.net. Vzorka balíky môžete prevziať z nasledujúcich ikon na stiahnutie. Ako C# a Visual Basic .NET jazykových verziách balíka vzorky sú k dispozícii.


Táto vzorka kódu ukazuje, ako upload a download súborov zo servera, ktorý nie je v rozsahu používateľa domény požiadavku. Poskytuje funkcie pre prenos súborov s protokoly HTTP a FTP. Okrem toho Táto vzorka kódu používa Uniform Resource Identifier (URI) identifikovať umiestnenie súborov na server. Trieda WebClient a WebRequest trieda kľúč triedy používané v tejto ukážke kódu.

Úroveň




alternate text

Informácie o prevzatí

Ak chcete prevziať tento vzorový kód, kliknite na jedno z nasledujúcich prepojení:

Prehľad

Je to pomerne jednoduché upload a download súborov zo vzdialeného servera ASP.net. Knižnica tried .NET Framework obsahuje niektoré objekty ľahké požiadavky. Trieda WebClient je vysokej triedy, ktorá uľahčuje server interakcie. WebClient triedy WebRequest objekty používajú na požiadavky. Triedy HttpWebRequest a FtpWebRequest sú protokol implementácie abstrakt WebRequest trieda. HttpWebRequest implementuje metódu GET a POST protokolu HTTP na odovzdanie a prevzatie súborov. FtpWebRequest implementuje STOR a RETR metódy protokolu FTP nahrať a súbory.


Táto vzorka kódu používa UploadData DownloadData metódy triedy WebClient prenos údajov zo vzdialeného servera URI. UploadData metóda používa protokol HTTP PUT postup a "application/x--www-Form-urlencoded" typ softvéru. DownloadData metóda používa FileStream objekt ukladať prichádzajúce prúd údajov a zápis Bajt pole do lokálneho súboru.

Vzorka prehľad

Táto vzorka kódu nájdete RemoteFileForm.aspx súbor, ktorý vysvetľuje, ako používať tieto dve nové triedy:

  • RemoteUpload

  • RemoteDownload

RemoteUpload Trieda

Trieda RemoteUpload má dve triedy detí. Tieto triedy sú HttpRemoteUpload a FtpRemoteUpload. Obidve triedy pomocou RemoteUpload výrobcu. Trieda RemoteUpload vyžaduje Bajt pole súboru a server URI. Môžete tiež zadať názov odovzdaného súboru. Trieda FtpRemoteUpload používa FtpWebRequest priamo (namiesto vyššej triedy WebClient ) spracovať konkrétne požiadavky protokolu FTP.


Pozrite si nasledujúce definície triedy ďalšie informácie o RemoteUpload triedy:
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);
}
}

} V súbore RemoteFileForm.cs, keď kliknete na tlačidlo odovzdať vytvorí inštanciu objektu RemoteUpload . Prejsť na server URI a cesta lokálneho fyzického súboru parametre objekt.


Poznámka: Ak nezadáte názov súboru použiť na uloženie súboru na serveri, systém automaticky vygeneruje názov súboru aktuálny dátum a čas na serveri. Dátum a čas je presne na milisekundy. Po dokončení postupu UploadData výsledok je zobrazený na aktuálnej stránke.

RemoteDownload Trieda

Trieda RemoteDownload má dve triedy detí. Tieto triedy sú HttpRemoteDownload a FtpRemoteDownload. Trieda RemoteDownload vyžaduje prostriedok URI a lokálnej fyzickej adresár. Trieda RemoteDownload kontroly, skontrolujte, či URI prostriedkov pred download je spustená. Trieda načíta prúd, ktorý obsahuje údaje odpovedí zo servera, a potom píše tento Bajt pole FileStream. Trieda FtpRemoteDownload používa FtpWebRequest priamo (namiesto vyššej triedy WebClient ) spracovať konkrétne požiadavky protokolu FTP.


Pozrite si nasledujúce definície triedy ďalšie informácie o RemoteDownload triedy:
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);
}
}
}
Poznámka: Ďalšie informácie o tom, ako vytvoriť a nasadiť aplikáciu vzorky, nájdete v súbore Readme.txt, ktorý je súčasťou balíka.


Jazyky

Táto vzorka kódu je dostupný v nasledujúcich jazykmi:

Jazyk

Názov projektu

Visual C#

CSRemoteUploadAndDownload

Visual Basic.NET

VRemoteUploadAndDownload

Technológia kategórií

  • ASP.NET 2.0

  • ASP.NET 3.5

  • ASP.NET 4.0

Odkazy

Ďalšie informácie o triede WebClient webovej lokalite vývojárov spoločnosti Microsoft (MSDN):

Všeobecné informácie o triede WebClientĎalšie informácie o metóde UploadData , navštívte nasledujúce webovú lokalitu MSDN:

Všeobecné informácie o metóde UploadDataĎalšie informácie o metóde DonwloadData , navštívte nasledujúce webovú lokalitu MSDN:

Všeobecné informácie o metóde DonwloadDataĎalšie informácie o metóde FtpWebRequest , navštívte nasledujúce webovú lokalitu MSDN:

Všeobecné informácie o metóde FtpWebRequestĎalšie informácie o tom, ako nahrať súbory s FTP, nájdete na nasledujúcej webovej lokalite MSDN:

Ako nahrať súbory s FTP

Ďalšie informácie

Čo je všetko v jednom kód rámca?

Všetko v jednom kód rámca ukazuje väčšina Microsoft vývoj techniky pomocou ukážky kódu v rôznych jazykmi. Každý príklad je starostlivo vybrané zložený a zdokumentované Ukázať jeden spoločný kód scenár. Ďalšie informácie o všetko v jednom kód rámca nájdete na nasledujúcej webovej lokalite spoločnosti Microsoft:

http://1code.codeplex.com

Ako nájsť ďalšie príklady všetko v jednom kód rámca

Ak chcete nájsť ďalšie príklady všetko v jednom kód rámca, hľadanie "kbcodefx" s súvisiace kľúčové slová Microsoft webovú lokalitu technickej podpory. Alebo nájdete na nasledujúcej webovej lokalite spoločnosti Microsoft:

Všetko v jednom kód rámca vzorky

Rýchle publikovanie upozornenie

Spoločnosť Microsoft ani jej dodávatelia robiť žiadne záruky týkajúce sa vhodnosti, spoľahlivosti alebo presnosti informácií a súvisiace grafiky obsiahnuté. Všetky tieto informácie a súvisiace grafické prvky sú poskytované "as is" bez záruky akéhokoľvek druhu. Spoločnosť Microsoft ani jej dodávatelia týmto odmietajú všetky záruky a podmienky vzťahujúce sa na tieto informácie a súvisiace grafické prvky vrátane všetkých záruk a podmienok obchodovateľnosti, vhodnosti na určitý účel, neprítomnosti úsilie, názvu a neporušenia cudzích práv. Konkrétne súhlasíte s tým, že v žiadnom prípade spoločnosť Microsoft ani jej dodávatelia sa zodpovednosť za akékoľvek priamych, nepriamych, represívne, náhodné, špeciálne, následné škody vrátane, bez obmedzenia, škody za stratu používania, údajov alebo zisku, vyplývajúce z alebo akokoľvek spojené s používaním alebo nemožnosť použitia informácií a súvisiace grafiky obsiahnuté, na základe zmluvy, deliktu, nedbalosti, plnej zodpovednosti alebo inak, aj keď Microsoft alebo ktoréhokoľvek z jej dodávateľov upozornení na možnosť škôd.

Potrebujete ďalšiu pomoc?

Chcete ďalšie možnosti?

Môžete preskúmať výhody predplatného, prehľadávať školiace kurzy, naučiť sa zabezpečiť svoje zariadenie a ešte oveľa viac.

Komunity pomôžu s kladením otázok a odpovedaním na ne, s poskytovaním pripomienok a so získavaním informácií od odborníkov s bohatými znalosťami.

Boli tieto informácie užitočné?

Aká je podľa vás jazyková kvalita textu?
Čo sa vám páčilo, prípadne čo nie?
Stlačením tlačidla Odoslať sa vaše pripomienky použijú na zlepšenie produktov a služieb spoločnosti Microsoft. Váš správca IT bude môcť tieto údaje zhromažďovať. Vyhlásenie o ochrane osobných údajov.

Ďakujeme za vaše pripomienky!

×