Hallo!
Ich möchte eine Datei zum Download anbieten, die in meinem Webprojekt liegt, was ich ja mit einem generischen Handler (.ashx) realisieren kann.
Hier mal ein wenig Pseudocode, damit ihr wisst was ich meine.
public class DocumentHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
if (datei.Exists())
{
context.Response.ContentType = contenttype;
context.Response.AddHeader("content-disposition", "attachment; filename=" +
context.Server.UrlEncode(filename) +
context.Server.UrlEncode(fileExt));
context.Response.AddHeader("content-length", dokument.Length.ToString());
context.Response.BinaryWrite(dokument);
context.Response.End();
}
else
{
return;
}
}
}
Meine Problem ist nun folgendes: Wenn ich eine Datei zum Download anbieten möchte, aber diese aus welchen Gründen auch immer nicht existiert, verschwindet meine Ursprungsseite und es wird eine komplett leere Seite angezeigt, mit der Adresse des Handlers.
Kann man den Handler evtl. so "abbrechen", dass wenn die Datei nicht existieren sollte, meine Ursprungsseite (von der ich dem Handler aufgerufen habe) beibehält und nicht auf die leere "Handlerseite" springt?
Vielen Dank schonmal im Voraus!
Gruß
Echo
Hallo,
du könntest den Handler im Falle, das keine Datei vorhanden ist, ein Javascript schreiben, welches History.Back() aufruft.
mfg
serial
Salute Echo
Mache aus dem normalen Link eines mit target="_blank", so kommt entweder der Download oder ein leeres Fenster das du ggf. schliessen könntest.
Serverseitig kommst du über die Servervariablen mit dem Key "HTTP_REFER" an die vorherige Seite.
Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011