这是由于内容部署标头用于文件流是大于大约 150 字节, 拉丁字符集是等于 150 个字符。 如果是使用非拉丁字符集, 例如日语或俄语格式化内容部署标头可能会发生此行为。
if (fullFileName.Length > 150) 

byte[] bs = System.Text.Encoding.UTF8.GetBytes(fullFileName); 
fullFileName = System.Text.Encoding.Default.GetString(bs); } 
http://support.microsoft.com/default.aspx?scid=kb%3Bzh-cn%3B820129

解决方案 »

  1.   

    两个\是什么作用啊?是因为文件名长吗?
    这么写试试:
    Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
      

  2.   

    如果去掉这句话filename = HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8);
    就乱码了。
      

  3.   

    你的文件名太长,你的文件名中包括了路径吧,要不包括路径,你的文件名不可能太长
    尝试以下处理办法:filename = HttpUtility.UrlEncode(new System.Io.FileInfo(filename).Name, System.Text.Encoding.UTF8);
      

  4.   

    那要怎么获取text的值呢,我也想过,但是弹出来的文件另存为对话框是微软自带的,要怎么获取它上面的文件名的输入框呢?