2010-11-11 23 views
1

Je rencontre des problèmes avec FileResult renvoyant un fichier avec un nom de fichier spécifique. Dans la base de données le nom du fichier est juste et ID + extension (par exemple: 456789.mp3)ASP.NET MVC FileResult avec un nom de fichier spécifique et Safari ou Chrome

Ce morceau de code

FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read); 
return File(fs, "application/octet-stream", "myfile.mp3"); 

fonctionnent bien dans tous les navigateurs sauf les navigateurs Webkit (Chrome, Safari). Chrome et Safari reçoivent des fichiers en tant que nom de fichier d'origine (456789.mp3). Quand j'ajoute les en-têtes avec

Response.AppendHeader("Content-Disposition", "attachment;filename=myfile.mp3"); 

Safari reçoit le fichier en tant que myfile.mp3attach (avis "attacher" joint à l'extension?), Mais Chrome reçoit ce fichier comme myfile.mp3, attach (il ajoute "attacher" à l'extension)

Est-ce que quelqu'un a rencontré ce genre de problème?

Merci

Répondre

7

Il m'a aidé:

 var encoding = System.Text.Encoding.UTF8; 
     Response.Charset = encoding.WebName; 
     Response.HeaderEncoding = encoding; 

      Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", (Request.Browser.Browser == "IE") ? HttpUtility.UrlEncode(fileName, encoding) : fileName)); 

     return File(fs, contentType, fileName); 
+0

Merci, ça m'a aidé! –

0

Mettre

  Response.Clear(); 
     Response.ClearHeaders(); 

Avant

  Response.Charset = encoding.WebName; 

résolu pour moi