我下載一個Excel C#操作方法內提交reutrns一個FileResult,像這樣:ASP.NET MVC:下載一個Excel文件
return File(bindata, "application/octet-stream", "mytestfile.xls");
當我手動導航到與上述相對應的URL方法,然後我得到該文件的渲染表示。該文件不會使用另存爲-dialog進行下載。
有沒有辦法強制通過另存爲-dialog進行下載?
-pom-
我下載一個Excel C#操作方法內提交reutrns一個FileResult,像這樣:ASP.NET MVC:下載一個Excel文件
return File(bindata, "application/octet-stream", "mytestfile.xls");
當我手動導航到與上述相對應的URL方法,然後我得到該文件的渲染表示。該文件不會使用另存爲-dialog進行下載。
有沒有辦法強制通過另存爲-dialog進行下載?
-pom-
我有一種感覺,你正在得到這種行爲,因爲你正在返回的媒體類型。
試着改變媒體類型的應用程序/ vnd.ms - Excel中是這樣的:
return File(bindata, "application/vnd.ms-excel", "mytestfile.xls");
你也可以使用這個如果是一個Excel 2010(xslx):application/vnd.openxmlformats-officedocument.spreadsheetml.sheet – Iridio
通常,當您指定的文件名添加到File
方法,它會自動附加一個Content-Disposition
頭,這樣的另存爲對話框始終顯示。所以當你說你的代碼不起作用時,我有點驚訝。您也可以嘗試手動設置這個頭:
Response.AppendHeader("Content-Disposition", "attachment; filename=mytestfile.xls");
Typo在那裏,它必須是「Content-Disposition」 –
@Jared Peless,是的,我剛剛注意到並修復了這個問題。 –
你可以試試這個:
return new FileContentResult(bindata, "application/vnd.ms-excel")
{
FileDownloadName = "mytestfile.xls")
};
希望這有助於。
你看到這種情況發生在一個特定的瀏覽器?爲什麼你不使用MIME類型的Excel文件? –
嗨查爾斯,你是對的,這隻發生在Opera上。現在我用FF和Safari進行測試,在那裏我得到一個保存對話框。 – Pompair