asp.net ashx-handler auffordert download statt Anzeige der Datei
Ich habe implementiert eine generische handler in meiner Anwendung, die funktioniert gut für Bilder, aber wenn ich manuell geben Sie die handler-URL im browser mit dem Bild der querystring Sie aufgefordert, downloaden statt anzeigen. Hier ist mein code:
public void ProcessRequest(HttpContext context)
{
if (this.FileName != null)
{
string path = Path.Combine(ConfigurationManager.UploadsDirectory, this.FileName);
if (File.Exists(path) == true)
{
FileStream file = new FileStream(path, FileMode.Open);
byte[] buffer = new byte[(int)file.Length];
file.Read(buffer, 0, (int)file.Length);
file.Close();
context.Response.ContentType = "application/octet-stream";
context.Response.AddHeader("content-disposition", "attachment; filename=\"" + this.FileName + "\"");
context.Response.BinaryWrite(buffer);
context.Response.End();
}
}
}
Ich bin mit dem octet-stream, denn ich beschäftige mich mit mehr als nur Bilder und ich weiß nicht immer, den content-Typ der Datei. Vielen Dank im Voraus!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einzige Weg ist, um anzugeben, richtigen ContentType, sodass der browser weiß, was zu tun mit dem Empfang der Datei, je nach installierten plugins (zum Beispiel das anzeigen von pdf-Dateien im browser-Rahmen) und system assosiations (zum Beispiel, bieten Sie zum öffnen des Dokuments im MS Office anstelle von einfachen download)
Können Sie versuchen, geben Sie den Inhaltstyp abhängig von Datei-Erweiterung, d.h.:
Wenn Sie speichern Sie die
ContentType
als Teil der Datei-Metadaten, wenn Sie ziehen Sie es wieder nach unten Ihr nutzen könnte.Content-disposition header ist derjenige, der bewirkt, dass Ihr browser zeigen die download-dialog. Entfernen Sie diese Zeile und es wird die im browser angezeigt werden.