Ich habe einen benutzerdefinierten Handler implementieren IHttpHandler. Die benutzerdefinierte Handler ermöglicht es uns, eine dynamische URL für Menschen zum Herunterladen von Dateien zu produzieren.
Der Code sieht wie folgt aus,
public void ProcessRequest(HttpContext context)
{
context.Response.AddHeader("Content-Disposition", "attachment;filename=" + attachment.FileName);
context.Response.AddHeader("Content-Length", attachment.Fileblob.Length.ToString());
context.Response.ContentType = GetMimeType(attachment.FileName);
context.Response.OutputStream.Write(attachment.Fileblob, 0, attachment.Fileblob.Length);
}
Das Problem liegt bei attachment.Filename. Wenn der Dateiname zufällig ein Leerzeichen wie dieses enthält,
Dateiname - 1.bmp
Mit dem Internet Explorer funktioniert es einwandfrei, aber mit Firefox wird die Datei im Download-Dialog so abgeschnitten,
Dateiname
Keine Verlängerung oder ähnliches. Ich habe auch dies versucht,
attachment.FileName.Replace(" ", "%20")
Das funktioniert im IE wieder, aber im Firefox führt es dazu, dass der Dateiname im Download-Dialog auf diesen Wert gesetzt wird,
Dateiname%20-%201.bmp
Ich habe auch dies ausprobiert,
HttpUtility.UrlEncode(attachment.FileName)
Sowohl im Firefox als auch im IE führt das zu diesem Ergebnis,
Dateiname+-+1.bmp
Irgendwelche Ideen?