我正在使用EPPlus從CSV中創建Excel文件,該文件沒有問題。不幸的是,下面的代碼會導致Internet Explorer 9,10和11刪除.xlsx
文件擴展名,而Chrome和Firefox則不會。如果我從文件名中刪除空格,則文件擴展名在IE中按預期工作。爲什麼文件名中的空格會導致IE在文件下載時刪除文件擴展名?
public FileStreamResult DetailsExcel(string id)
{
string custName;
var csv = this.GetCsvForCustomer(id, out custName);
var fileName = String.Format("Report for {0} ({1:d-M-yyyy HH mm})",
custName, DateTime.Now);
MemoryStream stream;
using (var excelPackage = new ExcelPackage())
{
var ws = excelPackage.Workbook.Worksheets.Add(fileName);
ws.Cells["A1"].LoadFromText(csv, this._excelTextFormat);
stream = new MemoryStream(excelPackage.GetAsByteArray());
}
return File(stream,
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
fileName + ".xlsx");
}
,我發現有些工作在引號包文件名或來urlencode串兩個綱領性機制。每個都有問題:
String.Format("\"{0}\".xlsx", fileName)
// above renders: __Report for Customer (20-2-2014 11 04)__.xlsx
HttpUtility.UrlEncode(fileName + ".xlsx")
// above renders: Report+for+Customer+(20-2-2014+11+04).xlsx
以上都不是最佳。當用戶使用IE瀏覽器時,如何在文件名中包含空格而不丟失文件擴展名?
看起來像'__'而不是引號:)。包括文件名和擴展名的全名需要引用。 – Teemu
@Teemu權利比UrlEncode選項更好,但仍然不是很棒。 :) – ahsteele