Logige sisse Microsofti kontoga
Logige sisse või looge konto.
Tere!
Valige mõni muu konto.
Teil on mitu kontot
Valige konto, millega soovite sisse logida.

SISSEJUHATUS

Selles artiklis kirjeldatakse kõik-ühes raamistiku näidis, mis on allalaadimiseks saadaval. Selle koodi näidis näitab, kuidas laadida ja alla laadida faile ASP.net-i serverist kohaliku või kaugarvuti. Proovi paketti saate alla laadida alla laadida järgmistest ikoonidest. Nii C# ja Visual Basic .net-i muukeelsete versioonide puhul proovi pakett on saadaval.


Selle koodi näidis näitab, kuidas laadida ja alla laadida faile serverist, mis ei ole kasutaja taotluse domeeni ulatus. Funktsioonid on ette nähtud failide HTTP ja FTP protokolle. Lisaks selle koodi näidis kasutab ühtse ressursi identifikaatorid (URI) tuvastamiseks serveris failide asukohad. Kasutada seda koodi näidise peamised klassid on selle WebClient ja WebRequest klassi.

Raskusaste




alternate text

Info allalaadimiseks

Seda koodi näidise allalaadimiseks klõpsake ühte järgmistest linkidest:

Tehniline ülevaade

On üsna lihtne üles laadida ja ASP.net-i serverist alla laadida. .NET raamistiku rühma teek sisaldab mõned taotluse kerge objektid. WebClient klass on kõrgetasemelise klassi, mis muudab server korda lihtsamaks. WebRequest objekte kasutatakse WebClient klassi taotlused. Klassi HttpWebRequest ja FtpWebRequest on abstraktne WebRequest klassi protokolliga seotud rakendused. HttpWebRequest rakendab HTTP-protokolli üles ja alla laadida faile GET ja POST meetodeid. FtpWebRequest rakendab STOR ja proovi uuesti 're meetodid üles ja alla laadida faile FTP-protokolli.


Selle koodi näidis kasutab WebClient klassi UploadData ja DownloadData meetodeid ja URI serverist andmeid edastada. HTTP-protokolli panna meetodiga kasutatakse UploadData meetodit ja "application/x-www-form-urlencoded" Internet meediumi tüüp. DownloadData meetodit kasutatakse FileStream objekti sissetulev andmevoog ja byte massiivi kohaliku faili kirjutada.

Proovi ülevaade

Koodi näidis leiate RemoteFileForm.aspx fail, mis selgitab, kuidas kasutada järgmised kaks uut liiki:

  • RemoteUpload

  • RemoteDownload

RemoteUpload klass

Klassi RemoteUpload on kaks laste klassi. Need liigitatakse HttpRemoteUpload ja FtpRemoteUpload. Mõlemat kasutada RemoteUpload konstruktor. Klassi RemoteUpload nõuab byte hulga failide andmete ja serveri URI. Saate kasutada üleslaaditud faili nimi. Klassi FtpRemoteUpload kasutab FtpWebRequest otse (mitte kasutades kõrgema taseme WebClient klass) töötlemiseks FTP protokolli konkreetsetele nõuetele.


Klassi järgmisi RemoteUpload klassi kohta lisateabe saamiseks vaadake:
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);
}
}

} RemoteFileForm.cs faili, kui klõpsate nuppu üles näiteks RemoteUpload objekti on loodud. Andke server URI ja kohaliku füüsilise faili tee parameetritena objekti loomiseks.


Märkus. Kui määrate serveris failide talletamiseks kasutatav nimi, loob süsteem automaatselt failinime järgi praegune kuupäev ja kellaaeg serveris. Kuupäev ja kellaaeg on õiged ning millisekundis. Kui UploadData meetod jõuab lõpule, kuvatakse tulemus praegusel lehel.

RemoteDownload klass

Klassi RemoteDownload on kaks laste klassi. Need liigitatakse HttpRemoteDownload ja FtpRemoteDownload. Klassi RemoteDownload nõuab URI ressursi ja kohaliku füüsilise kausta. Klassi RemoteDownload kontrollitakse veendumaks, et URI ressurss on olemas enne allalaadimine on käivitatud. Klassi toob stream, mis sisaldab vastus andmeid serverist ja seejärel kirjutab selle baidi massiivi FileStream. Klassi FtpRemoteDownload kasutab FtpWebRequest otse (mitte kasutades kõrgema taseme WebClient klass) töötlemiseks FTP protokolli konkreetsetele nõuetele.


Klassi järgmisi RemoteDownload klassi kohta lisateabe saamiseks vaadake:
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);
}
}
}
Märkus. Kuidas luua ja juurutada proovi taotluse kohta lisateabe saamiseks vaadake paketti sisalduvat faili Readme.txt.


Keeled

Selle koodi näidis on saadaval järgmised programmeerimiskeelte:

Keel

Projekti nimi

Visual C#

CSRemoteUploadAndDownload

Visual Basic.NET

VRemoteUploadAndDownload

Tehnoloogia kategooria

  • ASP.NET 2.0

  • ASP.NET 3.5

  • ASP.NET 4.0

Viited

WebClient klassi kohta lisateabe saamiseks külastage järgmist Microsoft Developer (MSDN) veebisaiti:

Üldine teave WebClient klassUploadData meetodi kohta lisateabe saamiseks külastage järgmist MSDN-i veebisaiti:

Üldine teave meetodi UploadDataDonwloadData meetodi kohta lisateabe saamiseks külastage järgmist MSDN-i veebisaiti:

Üldine teave meetodi DonwloadDataFtpWebRequest meetodi kohta lisateabe saamiseks külastage järgmist MSDN-i veebisaiti:

Üldine teave meetodi FtpWebRequestFTP failide kohta lisateabe saamiseks külastage järgmist MSDN-i veebisaiti:

Kuidas laadida faile FTP

Lisateabe saamiseks

Mis on kõik-ühes koodi raamistik?

Kõik-ühes koodi Framework kuvatakse enamiku Microsofti meetodid, kasutades koodinäidiseid erinevaid keeli. Igas näites on hoolikalt valitud, kuhu ja dokumenteeritud näidata ühte koodi stsenaarium. Kõik-ühes koodi Frameworki kohta lisateabe saamiseks külastage järgmist Microsofti veebisaiti:

http://1code.codeplex.com

Kuidas leida rohkem kõik-ühes koodi Frameworki näidised

Leida rohkem kõik-ühes koodi Frameworki näidised, otsige "kbcodefx" koos seotud märksõnad Microsofti tugiteenuste veebisaiti. Või külastage järgmist Microsofti veebisaiti:

Kõik-ühes koodi Frameworki näidised

Kiire avaldamise lahtiütlemine

Microsoft corporation ja/või tema vastavad tarnijad teha mingeid lubadusi sobivuse, usaldusväärsuse või andmete ja nendega seotud graafilistel siintoodud õigsust. Sellise teabe ja seostuvate piltide on esitatud "olemasoleval kujul" ilma igasuguse garantiita. Microsoft ja/või tema vastavad tarnijad Käesolevaga kaudsetest garantiidest ja tingimustest selle teabe osas ja sellega seotud graafika, sh kaudsetest garantiidest ja tingimustest, KAUBASTATAVUSE, kindlaks otstarbeks sobivuse, tööalaste vaeva, pealkiri ja eeskirjadest MITTEÜLEASTUMISEGA. Te nõustute konkreetselt, et ei vastuta Microsoft ja/või tema tarnijad vastutab otseste, kaudsete, karistuslike, juhuslike, eriliste, kaudsete kahjude või mis tahes kahjude eest mis sealhulgas, ilma piiranguteta, kasutage andmete kaotus või kasumi või mis tahes viisil kasutamise või võimetus kasutada teabe ja seostuvate piltide siintoodud, kas leping, kaebustele, hooletuse, otsese vastutuse alusel või muul viisil, isegi kui Microsofti või mõne tema tarnijad on olnud seotud soovitatav on kahjude võimalikkusest.

Kas vajate veel abi?

Kas soovite rohkem valikuvariante?

Siin saate tutvuda tellimusega kaasnevate eelistega, sirvida koolituskursusi, õppida seadet kaitsma ja teha veel palju muud.

Kogukonnad aitavad teil küsimusi esitada ja neile vastuseid saada, anda tagasisidet ja saada nõu rikkalike teadmistega asjatundjatelt.

Kas sellest teabest oli abi?

Kui rahul te keelekvaliteediga olete?
Mis mõjutas teie hinnangut?
Kui klõpsate nuppu Edasta, kasutatakse teie tagasisidet Microsofti toodete ja teenuste täiustamiseks. IT-administraator saab neid andmeid koguda. Privaatsusavaldus.

Täname tagasiside eest!

×