我今天遇到了一个问题,这对我来说很奇怪,但也许不是C#领域的专家。
我有一个叫做Download的函数,就像这样(一段代码!)
public void Download (string path){
HttpContext.Current.Response.ContentType = "application/octet-stream";
try {
....//process a 'filePath' variable using the 'path' parameter
using ( FileStream sourceFile = new FileStream( filePath, FileMode.Open ) ) {
...
HttpContext.Current.Response.AddHeader( "Content-Disposition", "attachment; filename=" + Path.GetFileName( filePath ) );
HttpContext.Current.Response.AddHeader( "Content-Length", fileSize.ToString() );
HttpContext.Current.Response.BinaryWrite( getContent );
}
...
}如果提到并存储在path/filePath变量中的文件名包含以下空格
PR SimpleTest.xls
然后,下载框中包含像PR这样的文件名,没有任何附加内容。

如果该文件名没有,没有空间(如PR_SimpleTest.xls),那么标题将随PR_SimpleTest.xls一起提供,我可以这样下载(显示带有他的扩展名的完整文件名)。
当文件名包含空格时,有解决方案来解决问题吗?
发布于 2012-09-20 06:37:01
谷歌搜索headers空间可以找到这个知识库文章,它建议用引号包围文件名。例如。
HttpContext.Current.Response.AddHeader(
"Content-Disposition",
"attachment; filename=\"" + Path.GetFileName( filePath ) + "\"");发布于 2013-07-29 23:33:32
上面的答案是:
Server.UrlEncode(strFileName)
不适用于我,它导致了一个文件名,即:
"My+Long+Filename.txt“
第一个使用围绕文件名使用引号的解决方案是生成的:
“我的长文件”
这就是我们想要的。
发布于 2012-09-20 06:38:03
我觉得你用火狐。看看这个链接:下载文件问题
Response.AppendHeader("content-disposition", "attachment; filename=" + Server.UrlEncode(strFileName))还可以看看ASP.NET MVC上传和下载文件和为ASP.NET MVC编写自定义文件下载操作结果。在MVC中,您可以使用特殊的操作结果。
https://stackoverflow.com/questions/12506899
复制相似问题