Как назвать файл для загрузки в Firefox?

Следующие заголовки работают в IE, но не в FF

<%@ Page Language="C#" ContentType="text/csv" Inherits="System.Web.Mvc.ViewPage"%>
<% Response.AddHeader("Content-Disposition", "filename=report.csv;attachment"); %>

В FF предложенное имя в FF отображается как «отчет» без расширения.


person Jader Dias    schedule 20.07.2009    source источник


Ответы (5)


В настоящее время я использую такой код:

response.AddHeader("Content-Disposition", "attachment; filename=\"data.csv\"");

В моей повседневной работе - и это прекрасно работает. Также вы уверены, что это не ваша ОС или что-то еще, в котором включена опция «Скрыть расширения для известных типов файлов»? (Я знаю, что в Windows есть такая возможность, и это сводит меня с ума)

person kastermester    schedule 20.07.2009
comment
Может потому, что он связал документацию - person Jader Dias; 20.07.2009
comment
Возможно, idk ... Я думаю, что решение состоит в том, чтобы использовать кавычки (экранированные), но я, честно говоря, не знаю - я разместил это, так как знал, что это сработало для меня, у меня нет ссылки на документацию или что-то еще, поскольку это код, который я создал несколько месяцев назад и с тех пор использую без каких-либо проблем. - person kastermester; 21.07.2009

filename - это просто параметр Content-Dispostion . Итак, вам нужно поменять местами оба:

<% Response.AddHeader("Content-Disposition", "attachment;filename=report.csv"); %>
person Gumbo    schedule 20.07.2009

Недавно я тоже столкнулся с этой проблемой, наконец-то нашел решение

Чтобы он работал правильно в firefox, убедитесь, что в имени файла кавычки размещены правильно и без пробелов в имени файла.

так что здесь - это образец примера для выполнения базового теста

Это сработает:

Response.ClearContent();
Response.ContentType = "text/csv";
Response.AddHeader("Content-Disposition", "attachment;filename="+ "MyOrders"+ "_Date_"
+DateTime.Now.ToString("d")+".csv");

Это тоже будет работать:

string myfilename = "MyOrders" + "_Date_" + DateTime.Now.ToString("d") + ".csv";
Response.AppendHeader("Content-Disposition", string.Format("attachment;filename={0}", 
myfilename));

//here you can check using the break point,weather you are using any extra quotes in filename

Это не будет работать в firefox

Response.AddHeader("Content-Disposition", "attachment;filename="+ "MyOrders"+ "_Date_"
+DateTime.Now+".csv");

// because in DateTime.Now there is spaces in Time, Seconds , so firefox downloads file not 
//as csv but downloads it as File , may be a binary file or unknown file type

Ссылки использовали this, this, this и это

Спасибо всем, чей пост как-то помог.

Надеюсь, это может кому-то помочь.

person Shaiju T    schedule 03.09.2015

Этот вопрос о создании CSV помог мне, когда мне нужно было реализовать создание и загрузку CSV: Как лучше всего создать CSV (текстовый файл с разделителями-запятыми) для загрузки с помощью ASP.NET?

person Michaël Larouche    schedule 20.07.2009
comment
спасибо за сообщение, это помогло решить проблему с firefox. вот решение - person Shaiju T; 03.09.2015

try "attachment; filename=\"report.csv\"" (т.е. с именем файла в кавычках)

person devio    schedule 20.07.2009