ASP.Net MVC FileStreamResult,FileDownloadName的有效字符

时间:2010-06-30 17:10:05

标签: asp.net-mvc model-view-controller file download filestreamresult

我有一个返回FileStreamResult的动作方法,下载工作正常,问题是虽然我设置了结果对象的FileDownloadName属性,但是一些文件是用另一个名字下载的(特别是地址的最后一部分)我正在处理的页面。例如,在页面“http://localhost:5479/Items/Edit/277”中,它将下载一个名为“277”的文件。

当文件的名称包含特殊字符(例如“SanJosé.jpg”)时会发生这种情况,但是当名称没有这样的字符时(例如“San Jose.jpg”),它会正常工作。

所以,我的问题是,如何允许用户下载名称中带有特殊字符的文件?或者,如果不可能,是否有一种方法可以从字符串中删除所有特殊字符,还是必须创建一个?

由于

2 个答案:

答案 0 :(得分:3)

其实我刚刚找到了解决这个问题的方法。

基本上我要做的是使用HttpUtility.UrlEncode方法转换文件的名称,当文件下载时,它将获得与原始文件几乎相同的名称(区别在于用空格替换的空格) (+)签名)。

希望这有助于其他人。

答案 1 :(得分:1)

我有同样的问题。更好的解决方案是HttpUtility.UrlPathEncode(...),因为它不会用'+'替换空格。