1

我有一個操作方法,返回一個FileStreamResult,下載工作正常,問題是,雖然我設置FileDownloadName屬性的結果對象,一些文件下載與另一個名稱(特別是我正在處理的頁面地址的最後一部分,例如在頁面「http://localhost:5479/Items/Edit/277」中,它將下載一個名爲「277」的文件)。ASP.Net MVC FileStreamResult,有效的字符爲FileDownloadName

當文件名包含特殊字符(例如「SanJosé.jpg」)時會發生這種情況,但當名稱中沒有這樣的字符時(例如「San Jose.jpg」),它會正常工作。

所以,我的問題是,我該如何讓用戶下載名稱中包含特殊字符的文件?或者,如果不可能,是否有一種方法可以從字符串中刪除所有特殊字符,還是必須創建一個?

謝謝

回答

3

其實我只是找到了解決這個問題的方法。

基本上我所要做的就是使用HttpUtility.UrlEncode方法來轉換文件的名稱,當文件下載時它將獲得與原始文件幾乎相同的名稱(區別在於用空格替換了空格加號(+))。

希望這可以幫助別人。

1

我有同樣的問題。更好的解決方案是HttpUtility.UrlPathEncode(...),因爲它不能用'+'代替空格。