我有一个返回FileStreamResult的动作方法,下载工作正常,问题是虽然我设置了结果对象的FileDownloadName属性,但是一些文件是用另一个名字下载的(特别是地址的最后一部分)我正在处理的页面。例如,在页面“http://localhost:5479/Items/Edit/277”中,它将下载一个名为“277”的文件。
当文件的名称包含特殊字符(例如“SanJosé.jpg”)时会发生这种情况,但是当名称没有这样的字符时(例如“San Jose.jpg”),它会正常工作。
所以,我的问题是,如何允许用户下载名称中带有特殊字符的文件?或者,如果不可能,是否有一种方法可以从字符串中删除所有特殊字符,还是必须创建一个?
由于
答案 0 :(得分:3)
其实我刚刚找到了解决这个问题的方法。
基本上我要做的是使用HttpUtility.UrlEncode方法转换文件的名称,当文件下载时,它将获得与原始文件几乎相同的名称(区别在于用空格替换的空格) (+)签名)。
希望这有助于其他人。
答案 1 :(得分:1)
我有同样的问题。更好的解决方案是HttpUtility.UrlPathEncode(...)
,因为它不会用'+'替换空格。