首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果文件名头在ASP.NET MVC 3中有空间,为什么文件名头是不完整的?

如果文件名头在ASP.NET MVC 3中有空间,为什么文件名头是不完整的?
EN

Stack Overflow用户
提问于 2012-09-20 06:07:31
回答 4查看 5.1K关注 0票数 5

我今天遇到了一个问题,这对我来说很奇怪,但也许不是C#领域的专家。

我有一个叫做Download的函数,就像这样(一段代码!)

代码语言:javascript
运行
复制
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一起提供,我可以这样下载(显示带有他的扩展名的完整文件名)。

当文件名包含空格时,有解决方案来解决问题吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-09-20 06:37:01

谷歌搜索headers空间可以找到这个知识库文章,它建议用引号包围文件名。例如。

代码语言:javascript
运行
复制
HttpContext.Current.Response.AddHeader(
    "Content-Disposition",
    "attachment; filename=\"" + Path.GetFileName( filePath ) + "\"");
票数 13
EN

Stack Overflow用户

发布于 2013-07-29 23:33:32

上面的答案是:

Server.UrlEncode(strFileName)

不适用于我,它导致了一个文件名,即:

"My+Long+Filename.txt“

第一个使用围绕文件名使用引号的解决方案是生成的:

“我的长文件”

这就是我们想要的。

票数 1
EN

Stack Overflow用户

发布于 2012-09-20 06:38:03

我觉得你用火狐。看看这个链接:下载文件问题

代码语言:javascript
运行
复制
Response.AppendHeader("content-disposition", "attachment; filename=" + Server.UrlEncode(strFileName))

还可以看看ASP.NET MVC上传和下载文件为ASP.NET MVC编写自定义文件下载操作结果。在MVC中,您可以使用特殊的操作结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12506899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档