【问题标题】:Download file code not working for firefox and IE下载文件代码不适用于 Firefox 和 IE
【发布时间】:2014-07-18 19:11:13
【问题描述】:

我创建了一个用于下载图像的代码。如果文件名没有特殊字符或标点符号,它可以正常工作。但是当文件名中包含其他语言的字符或“,”时,我发现了一个问题。

我的代码是:

private void AddFile(SPFile file)
{
    try
    {
        System.IO.FileInfo fileInfo = new FileInfo(file.Name);
        string filename = GeneralMethods.MakeValidFileName(file.Name);
        filename += fileInfo.Extension;
        byte[] obj = (byte[])file.OpenBinary();
        Response.ClearContent();
        Response.ClearHeaders();
        Response.AppendHeader("Content-Disposition", "attachment; filename= " + filename);
        Response.ContentType = "application/octet-stream";
        if (Response.IsClientConnected)
            Response.BinaryWrite(obj);
        Response.Flush();
        Response.Close();


    }
    catch (Exception ex)
    {           
    }
    finally
    {

    }
}

为了避免文件名中出现其他语言的字符和其他标点符号,我创建了一种将非英文字符替换为空白的方法。

    public static string MakeValidFileName(string name)
    {
        Regex rgx = new Regex("[^a-zA-Z0-9 -]");
        return rgx.Replace(name, "");
    } 

在我的场景中,我有两个文件“xäbace 11,5 hm”和“Png 文件”。我可以在 Chrome 中下载这些文件,但无法在 IE 和 Firefox 中下载。还有一件事,该文件是在 Firefox 中下载的,但没有扩展名。即文件被下载,完成后,如果我向该文件添加扩展名,它工作正常。

我应该怎么做才能解决这个问题?

【问题讨论】:

    标签: asp.net download


    【解决方案1】:

    说真的,我不懂 ASP。 但似乎您允许文件名中有空格。您应该避免使用它,因为某些浏览器会强制对文件名进行 URL 编码,将空格替换为 %20 并弄乱文件路径。 此外,在某些语言 (PHP) 中,文件名中的空格在某些情况下会强制 MIME 类型为 text/html。

    出于多种原因,您应该避免在要下载或仅在网络中使用的文件中出现空格。

    【讨论】:

      猜你喜欢
      • 2015-07-11
      • 1970-01-01
      • 2013-07-01
      • 1970-01-01
      • 2013-11-10
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      • 1970-01-01
      相关资源
      最近更新 更多