3 Stimmen

PDF-Download in ASP.NEt mit IE erzwingen

Also, ich Benutzer ein bisschen Code, um einen Download auf meinem ASP.Net-basierten Projekt zu erzwingen. Dieses Bit des Codes funktioniert in Firefox und Chrome, aber nicht in IE aus irgendeinem seltsamen Grund. Noch merkwürdiger ist, dass es in allen drei anfänglich funktionierte, und nur in IE vor kurzem aufgehört hat zu funktionieren. Unten ist der Code, den ich verwendet habe, bitte lassen Sie mich wissen, wenn irgendwelche Anpassungen vorgenommen werden müssen oder was das Problem mit mit sein kann.

 string path = MapPath(fname);
    string name = Path.GetFileName(path);
    string ext = Path.GetExtension(path);
    string type = "Application/pdf";
    Response.AppendHeader("content-disposition","attachment; filename=" + path);
    Response.WriteFile(path);
    Response.End();  

Mehr Details Hier ist der überarbeitete Code, funktioniert immer noch nicht für IE.

 string path = MapPath(fname);
    string name = Path.GetFileName(path);
    string ext = Path.GetExtension(path);
    string type = "Application/pdf";
    Response.ClearHeaders();
    Response.ClearContent();
    Response.ContentType = type;
    Response.AddHeader("content-disposition","attachment; filename=" + path);
    Response.WriteFile(path);
    Response.End();

4voto

NKCSS Punkte 2713

Sie sollten wahrscheinlich versuchen, den Mime-Typ auf "application/octet-stream" zu setzen. Wenn Sie nicht wollen, dass ein bestimmter Handler auf den Mime-Type reagiert.

1voto

BZ1 Punkte 1296

Sollte dieser Code

 Response.AddHeader("content-disposition","attachment; filename=" + path);

geändert werden als

 Response.AddHeader("content-disposition","attachment; filename=" + name + "." + ext);

o

 Response.AddHeader("content-disposition","attachment; filename=" + name + ".pdf");

Weitere zu prüfende Punkte

  1. Response.Buffer am Anfang auf true setzen
  2. Response.clear am Anfang
  3. response.binarywrite anstelle von writefile verwenden
  4. Antwortspülung am Ende
  5. Stellen Sie sicher, dass keine HTML- oder Leerzeichen in den response.stream geschrieben werden, außer dem binarywrite.

0voto

Craig Howard Punkte 1629

Durch Hinzufügen der folgenden zwei Zeilen am Anfang habe ich das Problem gelöst:

Response.ClearContent();
Response.ClearHeaders();

0voto

Lone Crusader Punkte 31

Problem gelöst. Der Grund dafür, dass es nicht funktionierte, war ein zusätzliches Formular auf der Musterseite, das offenbar die Schaltflächen überlagerte. Sobald das behoben war, funktionierte es in allen Browsern einwandfrei.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X