ĮVADAS

Šiame straipsnyje aprašoma viskas viename sistemos pavyzdys, kurį galima atsisiųsti. Šis kodo pavyzdys rodo, kaip įkelti ir atsisiųsti failus iš vietos arba nuotolinio serverio, ASP.NET. Pavyzdys paketus galite atsisiųsti iš šios atsisiųsti piktogramos. C# ir Visual Basic .NET kalbos versijos pavyzdys paketą galima.


Šis kodo pavyzdys rodo, kaip įkelti ir atsisiųsti failus iš serverio, kuriame nėra vartotojo užklausą domeno sritį. Funkcija yra skirta perkelti failus naudojant HTTP ir FTP protokolus. Be to, šis kodo pavyzdys naudoja vieningąjį išteklių identifikatorių (URI) nurodytos vietos failų serveryje. Pagrindinės klasės, naudojamas šis kodo pavyzdys yra WebClient klasės ir WebRequest klasės.

Sunkumo lygis




alternate text

Atsisiųsti informaciją

Norėdami atsisiųsti šį kodo pavyzdys, spustelėkite vieną iš šių saitų:

Techninė apžvalga

Gana lengva įkelti ir atsisiųsti failus iš nuotolinio serverio, ASP.NET. .NET Framework klasių biblioteka suteikia lengvas užklausos objektas. WebClient klasės yra aukšto lygio klasės, palengvina serverio sąveikos. WebRequest objektai naudoja WebClient klasės pateikti užklausą. HttpWebRequest "ir" FtpWebRequest klasės yra protokolo būdingas realizavimo santrauką WebRequest klasės. HttpWebRequest įgyvendina GET ir POST metodai HTTP protokolą įkelti ir atsisiųsti failus. FtpWebRequest vykdo STOR ir švie būdų FTP protokolo įkelti ir atsisiųsti failus.


Šis kodo pavyzdys naudoja WebClient klasės UploadData ir DownloadData būdų perkelti duomenis į ir iš nuotolinio serverio URI. UploadData metodas naudojant HTTP protokolą įdėti būdas ir "programos/x-kuriame diegsite CMSMS-form-urlencoded" interneto laikmenos tipas. DownloadData naudojama su FileStream objekto saugoti gaunamų duomenų srautą ir rašymo baitų masyvas failą.

Pavyzdys apžvalga

Šis kodo pavyzdys, rasite RemoteFileForm.aspx failą, kuriame paaiškinama, kaip naudoti šį naują klasių:

  • RemoteUpload

  • RemoteDownload

RemoteUpload klasė

RemoteUpload klasė turi dvi vaiko klases. Šios klasės yra HttpRemoteUpload ir FtpRemoteUpload. Abiejų klasių naudoti RemoteUpload konstruktorius. RemoteUpload klasės reikia baitų masyvas duomenų failas ir serverio URI. Taip pat galite naudoti įkelto failo pavadinimą. FtpRemoteUpload klasės naudoja FtpWebRequest tiesiogiai (o ne aukštesnio lygio WebClient klasės) tvarkyti tam tikri reikalavimai FTP protokolą.


Ieškokite daugiau informacijos apie RemoteUpload klasės klasės apibrėžtys:
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 faile, spustelėjus mygtuką įkelti RemoteUpload objekto egzempliorių yra sukurtas. Perduoti serverio URI ir parametrais sukurti objekto vietos fizinio failo maršrutas.


Pastaba. Jei nenurodysite failo vardą, kuriuo naudodamiesi failų serveryje, sistema automatiškai sukurs pagal dabartinių datos ir laiko serverio vardą. Tiksliau milisekundžių, kuris yra data ir laikas. Baigus UploadData būdas, rezultatas yra rodomas dabartiniame puslapyje.

RemoteDownload klasė

RemoteDownload klasės taip pat yra dvi vaiko klases. Šios klasės yra HttpRemoteDownload ir FtpRemoteDownload. RemoteDownload klasės reikia URI išteklių ir vietos fizinį katalogą. RemoteDownload klasės tikrina, patikrinkite, ar prieš atsisiųsti URI išteklių yra paleista. Klasės nuskaito srautą, yra atsakymo duomenų iš serverio, ir tada į FileStreamįrašomas šis baitų masyvas. FtpRemoteDownload klasės naudoja FtpWebRequest tiesiogiai (o ne aukštesnio lygio WebClient klasės) tvarkyti tam tikri reikalavimai FTP protokolą.


Ieškokite daugiau informacijos apie RemoteDownload klasės klasės apibrėžtys:
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);
}
}
}
Pastaba. Jei norite gauti daugiau informacijos apie tai, kaip sukurti ir įdiegti taikomosios programos pavyzdys, rasite faile Readme.txt, kuri yra įtraukta į atsisiuntimo paketą.


Kalbos

Šis kodo pavyzdys yra šių programavimo kalbų:

Kalbos

Projekto pavadinimas

"Visual C#"

CSRemoteUploadAndDownload

Visual Basic.NET

VRemoteUploadAndDownload

Technologijos kategorija

  • ASP.NET 2.0

  • ASP.NET 3.5

  • ASP.NET 4.0

Nuorodos

Daugiau informacijos apie WebClient klasę, apsilankykite šioje "Microsoft" programų kūrėjų (MSDN) svetainėje:

Bendroji informacija apie WebClient klasėJei norite gauti daugiau informacijos apie UploadData metodą, apsilankykite šioje MSDN svetainėje:

Bendroji informacija apie UploadData metodasJei norite gauti daugiau informacijos apie DonwloadData metodą, apsilankykite šioje MSDN svetainėje:

Bendroji informacija apie DonwloadData metodasJei norite gauti daugiau informacijos apie FtpWebRequest metodą, apsilankykite šioje MSDN svetainėje:

Bendroji informacija apie FtpWebRequest metodasJei norite gauti daugiau informacijos apie tai, kaip įkelti failus į FTP, apsilankykite šioje MSDN svetainėje:

Kaip įkelti failus į FTP

Daugiau informacijos

Kas yra viskas viename kodas sistemą?

Viskas viename kodas Framework rodo daugelis "Microsoft" kūrimo metodus naudojant programavimo kalbų kodų pavyzdžius. Kiekviename pavyzdyje atidžiai pasirinkti, sudarytas ir dokumentais parodyti vieną dažni kodas. Daugiau informacijos apie viskas viename kodas sistemą, apsilankykite šioje "Microsoft" svetainėje:

http://1code.codeplex.com

Kaip rasti daugiau viskas viename kodas sistemos pavyzdžiai

Norėdami rasti daugiau viskas viename kodas Framework pavyzdžių, ieškokite "kbcodefx" kartu su susijusių raktinių žodžių "Microsoft" palaikymo svetainėje. Arba, apsilankykite šioje "Microsoft" svetainėje:

Viskas viename kodas sistemos pavyzdžiai

Spartusis publikavimas ribojimas

"Microsoft corporation" ir (arba) jos tiekėjai atlikti jokių garantijų apie tinkamumo, patikimumo ar tikslumo informacija ir su ja susiję grafiniai publikuotą. Visa čia esanti informacija ir su ja susiję grafiniai pateikiami "tokia, kokia yra, nesuteikiant jokių garantijų. "Microsoft" ir (arba) jos atitinkami tiekėjai neteikia jokių garantijų dėl informacijos ir susiję grafiniai elementai, įskaitant visas numanomas garantijas ir sąlygas, PERKAMUMO, tinkamumo konkrečiam tikslui, kokybiškas pastangas, pavadinimą ir nepažeidžiamumą. Jūs konkrečiai sutinkate, kad bet kuriuo atveju "Microsoft" ir (arba) jos tiekėjai atsako už jokių tiesioginių, netiesioginių, baudžiamuosius, atsitiktinius, specialią, pasekminę žalą ar nuostolius, bet įskaitant, bet neapsiribojant, nuostolius dėl naudojimo, duomenų ar pelno, ar kaip nors susijusią su naudojimosi ar negalėjimo naudotis informacija ir su ja susiję grafiniai publikuotą, priklausomai nuo sutarties, delikto, aplaidumo, atsakomybės be kaltės ar kt., net jei "Microsoft" arba bet kurį iš jos tiekėjų buvo pranešta apie nuostolių galimybę.

Reikia daugiau pagalbos?

Tobulinkite savo įgūdžius
Ieškoti mokymo
Pirmiausia gaukite naujų funkcijų
Prisijungti prie "Microsoft Insider"

Ar ši informacija buvo naudinga?

Ar esate patenkinti vertimo kokybe?
Kas turėjo įtakos jūsų patirčiai?

Dėkojame už jūsų atsiliepimus!

×