Logg på med Microsoft
Logg på, eller opprett en konto.
Hei,
Velg en annen konto.
Du har flere kontoer
Velg kontoen du vil logge på med.

INTRODUKSJON

Denne artikkelen beskriver et eksempel på alt-i-ett-rammeverket som er tilgjengelig for nedlasting. Dette kodeeksemplet viser hvordan du laste opp og laste ned filer fra en ekstern eller lokal server i ASP.NET. Du kan laste ned eksempel-pakker fra følgende ikoner for nedlasting. Både C# og Visual Basic .NET versjon av pakken sample er tilgjengelige.


Dette kodeeksemplet viser hvordan du laste opp og laste ned filer fra en server som ikke er i omfanget av brukerens forespørsel domene. Funksjonaliteten tilbys for overføring av filer med både HTTP- og FTP-protokoller. Dette kodeeksemplet bruker også Uniform Resource identifikatorer (URIer) til å identifisere plasseringen av filer på en server. Viktigste klassene som brukes i dette kodeeksemplet er WebClient -klassen og WebRequest -klassen.

Vanskelighetsgraden




alternate text

Nedlastingsinformasjon

Hvis du vil laste ned dette kodeeksemplet, klikker du én av følgende koblinger:

Teknisk oversikt

Det er ganske enkelt å laste opp og laste ned filer fra en ekstern server i ASP.NET. .NET Framework-Klassebibliotek gir noen lette forespørsel-objekter. WebClient -klassen er en klasse på høyt nivå som gjør det enklere å server samhandlinger. WebRequest objekter brukes av WebClient -klassen til å gjøre forespørsler. HttpWebRequest og FtpWebRequest klassene er protokollspesifikke implementeringer av abstrakte klassen WebRequest . HttpWebRequest implementerer metodene GET og POST av HTTP-protokollen til å laste opp og laste ned filer. FtpWebRequest implementerer metodene LAGR og prøv på nytt 'RE av FTP-protokollen for å laste opp og laste ned filer.


Dette kodeeksemplet bruker metodene UploadData og DownloadData av WebClient -klassen til å overføre data til og fra en ekstern server URI. Metoden UploadData brukes med HTTP-protokollen PUT-metoden, og Skriv inn de "application/x-www-form-urlencoded" Internett-mediene. Metoden DownloadData brukes med en FileStream -objektet til å lagre den innkommende datastrømmen og skrive byte-matrise til en lokal fil.

Eksempel-oversikt

I denne eksempelkoden finner du filen RemoteFileForm.aspx som forklarer hvordan du bruker følgende to nye klasser:

  • RemoteUpload

  • RemoteDownload

RemoteUpload-klassen

RemoteUpload -klassen har to underordnede klasser. Disse klassene er HttpRemoteUpload og FtpRemoteUpload. Begge klassene Bruk konstruktøren RemoteUpload . Klassen RemoteUpload krever en byte-matrise av fildataene og en URI-server. Du kan også angi navnet som skal brukes for den opplastede filen. Klassen FtpRemoteUpload bruker FtpWebRequest direkte (i stedet for ved hjelp av høyere nivå WebClient -klassen) til å håndtere bestemte kravene til FTP-protokollen.


Se følgende klassedefinisjoner for mer informasjon om RemoteUpload -klassen:
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);
}
}

} Når du klikker på knappen Last opp i RemoteFileForm.cs-filen opprettes en forekomst av RemoteUpload -objekt. Gi serveren URI og en lokal fil for fysisk bane som parametere til å opprette objektet.


Obs! Hvis du ikke angir et filnavn som skal brukes til å lagre filen på serveren, vil systemet automatisk generere et filnavn i henhold til gjeldende dato og klokkeslett på serveren. Datoen og klokkeslettet er nøyaktig ned til millisekundet. Etter at metoden UploadData er ferdig, vises resultatet på gjeldende side.

RemoteDownload-klassen

Klassen RemoteDownload inneholder også to underordnede klasser. Disse klassene er HttpRemoteDownload og FtpRemoteDownload. Klassen RemoteDownload krever en URI-ressurs og en lokal fysisk mappe. Klassen RemoteDownload kontrolleres for å sikre at ressursen URIEN finnes før nedlastingen er startet. Klassen henter strømmen som inneholder svardata fra serveren, og deretter skriver denne byte-matrise til en FileStream. Klassen FtpRemoteDownload bruker FtpWebRequest direkte (i stedet for ved hjelp av høyere nivå WebClient -klassen) til å håndtere bestemte kravene til FTP-protokollen.


Se følgende klassedefinisjoner for mer informasjon om RemoteDownload -klassen:
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);
}
}
}
Obs! Hvis du vil ha mer informasjon om hvordan du oppretter og distribuerer eksempelprogrammet, se viktig.txt-filen som er inkludert i nedlastingspakken.


Språk

Dette kodeeksemplet er tilgjengelig i følgende programmeringsspråk:

Språk

Prosjektnavn

Visual C#

CSRemoteUploadAndDownload

Visual Basic.NET

VRemoteUploadAndDownload

Teknologi-kategori

  • ASP.NET 2.0

  • ASP.NET 3.5

  • ASP.NET 4.0

Referanser

Hvis du vil ha mer informasjon om WebClient -klassen, kan du gå til følgende webområde for Microsoft Developer (MSDN):

Generell informasjon om WebClient-klassenHvis du vil ha mer informasjon om UploadData -metoden, kan du gå til følgende MSDN-webområde:

Generell informasjon om metoden UploadDataHvis du vil ha mer informasjon om DonwloadData -metoden, kan du gå til følgende MSDN-webområde:

Generell informasjon om metoden DonwloadDataHvis du vil ha mer informasjon om FtpWebRequest -metoden, kan du gå til følgende MSDN-webområde:

Generell informasjon om metoden FtpWebRequestHvis du vil ha mer informasjon om hvordan du laster opp filer med FTP, kan du gå til følgende MSDN-webområde:

Slik laster du opp filer med FTP

Hvis du vil ha mer informasjon

Hva er rammeverk for alt-i-ett-kode?

Rammeverk for alt-i-ett-kode viser utviklingsteknikker for de fleste Microsoft ved hjelp av kodeeksempler i programmeringsspråk. Hvert eksempel er nøye valgt, satt sammen og dokumentert for å vise et vanlig scenario for koden. Hvis du vil ha mer informasjon om rammeverk for alt-i-ett-kode, kan du gå til følgende Microsoft-webområde:

http://1code.codeplex.com

Slik finner du mer alt-i-ett-kode Framework-eksempler

Hvis du vil finne mer alt-i-ett-rammeverk kode eksempler, Søk etter "kbcodefx" sammen med beslektede nøkkelord på Microsoft-webområde for kundestøtte. Eller gå til følgende Microsoft-webområde:

Alt-i-ett rammeverk kode eksempler

Rask publisering ansvarsfraskrivelse

Microsoft corporation og/eller dets respektive leverandører gir ingen uttalelser om egnetheten, pålitelighet eller nøyaktigheten av informasjon og relatert grafikk i dette dokumentet. All slik informasjon og relatert grafikk er levert "som den er" uten garantier av noe slag. Microsoft og/eller dets respektive leverandører fraskriver seg alle garantier og betingelser med hensyn til denne informasjonen herved og relatert grafikk, inkludert alle stilltiende garantier og betingelser for salgbarhet, anvendelighet for særskilte formål, rimelig innsats, tittel og overholdelse. Du godtar spesielt at ikke i noe tilfelle skal Microsoft og/eller dets leverandører være ansvarlig for noen direkte, indirekte, indirekte, tilfeldige, spesielle, konsekvensielle skader eller noen skader inkludert, uten begrensning, erstatning for tap av bruk, data eller inntekter, som oppstår som følge av eller på noen måte knyttet til bruken av eller manglende evne til å bruke informasjon og relatert grafikk i dette materialet, enten basert på kontrakt, subjektivt ansvar, uaktsomhet, objektivt ansvar eller annen måte, selv om Microsoft eller noen av dets leverandører er blitt underrettet om muligheten for skader.

Trenger du mer hjelp?

Vil du ha flere alternativer?

Utforsk abonnementsfordeler, bla gjennom opplæringskurs, finn ut hvordan du sikrer enheten og mer.

Fellesskap hjelper deg med å stille og svare på spørsmål, gi tilbakemelding og høre fra eksperter med stor kunnskap.

Var denne informasjonen nyttig?

Hvor fornøyd er du med språkkvaliteten?
Hva påvirket opplevelsen din?
Når du trykker på Send inn, blir tilbakemeldingen brukt til å forbedre Microsoft-produkter og -tjenester. IT-administratoren kan samle inn disse dataene. Personvernerklæring.

Takk for tilbakemeldingen!

×