【问题标题】:ASP.NET - Download File When File Name Contain SpacesASP.NET - 当文件名包含空格时下载文件
【发布时间】:2017-09-05 23:45:51
【问题描述】:

我想从服务器下载文件。下载时我想更改文件名。 但是当文件名包含空格时,我无法完全更改文件名。

我的代码如下

Response.AddHeader("content-disposition", "attachment; filename=" + fileName);

这让用户可以将文件保存到他们的计算机上。 但是当我保存文件时,只保存文件名的第一个单词。

例如。我想将文件名命名为(“CCNA Q&A.pdf”),但文件另存为(“CCNA”)

我想知道如何用空格保存文件名。

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    在 Firefox 中:Server.UrlEncode() 将用 %20 替换空格 只需将文件名放在双引号 filename = "\"" + filename + "\"";

    之间

    【讨论】:

      【解决方案2】:

      您是否尝试过 Server.UrlEncode()? 或者您可以用 _-s(正则表达式替换)省略所有非字母字符(' '、- 等)。


      Response.AddHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
      

      【讨论】:

      • 我试过 httputility.urlencode。它保存了所有文件名和扩展名,但将 + 放在空格中,而 %26 在 & (CCNA Q&A.pdf) 就像 (CCNA+Q%26A.pdf)。无论如何也要节省空间?
      • 我使用 Visual Studio 2008,vb.net。以下是我的代码。 context.Response.Buffer = True context.Response.Clear() context.Response.ContentType = "octet/stream" '这是我的代码,只保存了空格前的单词 'context.Response.AddHeader("content-disposition", "attachment; filename=" + FileName) '这是我的新代码,在空格中用加号保存全名 context.Response.AddHeader("content-disposition", "attachment; filename=" + HttpUtility.UrlEncode(FileName)) context.Response.WriteFile("App_Data\" & FileName)
      【解决方案3】:

      我在尝试下载名称中包含空格的文本文件时遇到了同样的问题。我已经使用 UrlDecode 函数解决了这个问题。由于浏览器将空格转换为“+”符号,使用解码功能需要将这些“+”转换为空格。

      fileName = Server.UrlDecode(fileName);
      Response.AddHeader("content-disposition", "attachment; filename=\"" + fileName + "\"");
      

      【讨论】:

        【解决方案4】:

        你必须用额外的引号括起来:

        Response.AddHeader("content-disposition", "attachment; filename=\"" + fileName + "\"");
        

        【讨论】:

          猜你喜欢
          • 2020-11-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-05
          • 1970-01-01
          相关资源
          最近更新 更多