2 votes

Pourquoi Firefox coupe-t-il le nom du fichier de réponse ?

Le code suivant accède à une méthode d'aide qui crée et renvoie un paquet Excel EPPlus, puis renvoie le paquet au navigateur :

public ActionResult DownloadMatrixExcel(int projectId)
        {
            try
            {
                // Get project details
                var project = (from p in db.Projects
                               where p.ProjectId == projectId
                               select new
                               {
                                   companyName = p.Company.Name,
                                   projectName = p.Name
                               }).Single();

                // Must append file type to file download responses
                var fileName = project.projectName + "-" + project.companyName + "-" + DateTime.Now.ToString("yyyyMMdd", CultureInfo.InvariantCulture) + ".xlsx";

                // Configure response
                Response.Clear();
                Response.BufferOutput = false;
                Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                Response.AddHeader("content-disposition", "attachment; filename=" + fileName);

                // Create and populate excel package
                var matrixSpreadsheet = ExcelHelper.BuildMatrixExcel(projectId);
                matrixSpreadsheet.SaveAs(Response.OutputStream);

            }
            catch (Exception e)
            {
                return Content("Error: " + e.Message);
            }

            // Download okay - No ViewResult
            return new EmptyResult();
        } 

Cela fonctionne bien dans tous les navigateurs que j'ai testés, mais FireFox 18.0.1 (je n'ai pas encore testé d'autres versions de FF) coupe le nom de fichier au premier espace, de sorte que "someproject - somecompany - thedate" est juste "someproject". Je peux effectuer un remplacement et supprimer les espaces, mais cela rend certains noms de fichiers un peu bizarres. L'extension du fichier semble être intacte et il n'y a pas d'autres problèmes, mais je me demandais si quelqu'un pouvait offrir une explication ou une solution ?

5voto

robertklep Points 29669

Le nom du fichier doit être placé entre des guillemets ( "filename" ).

4voto

GP24 Points 273

J'ai trouvé la réponse ici en faisant des recherches sur un autre problème : Problème de téléchargement de fichiers dans FireFox uniquement

Response.AddHeader("Content-Disposition", 
                    string.Format("attachment; filename = \"{0}\"",
                    System.IO.Path.GetFileName(FileName)));

Cela donnera également au fichier le type de contenu correct lorsque vous choisirez d'enregistrer plutôt que d'ouvrir dans le navigateur dans FireFox.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X