Hallo zusammen,
ich habe auf einer Testseite einen Button. Mit Klick auf diesen Button, möchte ich eine Datei herunterladen, die auf einem Server liegt. Da ich momentan aber noch nicht auf dem Server testen kann, habe ich versucht es auf meinem Rechner zu simulieren, daher diese etwas vereinfachte Lösung:
protected void Button1_Click(object sender, EventArgs e)
{
string url = @"C:\download.txt"; //Quelle
string filename = @"C:\Test"; //Ziel
WebClient client = new WebClient();
try
{
client.DownloadFile(url, filename);
byte[] bArrErgebnis = client.DownloadData(url);
string strErgebnis = client.DownloadString(url);
Stream stream = client.OpenRead(url);
}
catch (WebException exc)
{
Console.WriteLine(exc);
}
catch (UriFormatException exc)
{
Console.WriteLine(exc);
}
}
Leider passiert nicht allzu viel und eine Exception wird geworfen. Vielleicht könnt ihr mir helfen und mir sagen, was ich falsch gemacht habe. Ich weiß ja nicht mal, ob ich überhaupt auf dem richtigen Weg bin.
Danke schon einmal im Voraus.
Grüße,Cindy
Hallo
Der Text der Exception wäre sehr hilfreich. Ich glaube auch nicht das du mit der WebClient-Klasse auf Dateien im Filesystem zugreifen kannst. Installiere dir zum testen lieber einen Xammp oder IIS und teste dann mit 'localhost'.
Ja genau, das ist richtig. Ansonsten funktioniert das prorgamm, einfach mal http://www.google.de einbauen udn es haut super hin
Unsere Website
iPhone Programmierung | Android Programmierung
Mmh, also wenn ich den Code so lasse, wie im ersten Beitrag, dann wird mir folgendes gesagt
"Eine Ausnahme (erste Chance) des Typs "System.Net.WebException" ist in System.dll aufgetreten."
Nun habe ich den Code dann mal folgendermaßen abgeändert:
protected void Button1_Click(object sender, EventArgs e)
{
string url = @"C:\download.txt";
string filename = @"C:\Test";
WebClient client = new WebClient();
client.DownloadFile(url, filename);
byte[] bArrErgebnis = client.DownloadData(url);
string strErgebnis = client.DownloadString(url);
Stream stream = client.OpenRead(url);
}
Ich bekomme folgende Fehlermeldung:
"WebException wurde nicht von Benutzercode behandelt.Ausnahmefehler während einer WebClient-Anforderung."
So ganz richtig kann es doch dann nicht sein,oder?
Hallo Cindy
Was du benötigst, liegt im Namespace "System.IO" - schau dir mal hier unter Artikel folgendes an:
Der WebClient ist für Remoteadresse, du arbeitest hier aber lokal auf dem Dateisystem.
Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011
Hallöchen,
nach ausführlicherer Recherche hat es nun funktioniert. Ich habe das ganze folgendermaßen gemacht:
protected void Button1_Click(object sender, EventArgs e)
{
string path=Request.PhysicalApplicationPath;
string fname="example.doc";
FileInfo myFileInfo = new FileInfo(path + fname);
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + myFileInfo.Name);
Response.AddHeader("Content-Length", myFileInfo.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.WriteFile(myFileInfo.FullName);
Response.End();
}
Danke für die Hilfe hier im Forum.
Grüße, Cindy
Salute Cindy
So sollte man das eben nicht machen.
Verwende dazu HttpHandler, siehe:
Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011