if (e.CommandName == "down")
            {
                
                    String FullFileName = System.Web.HttpContext.Current.Server.MapPath(e.CommandArgument.ToString());
                    FileInfo DownloadFile = new FileInfo(FullFileName);
                    System.Web.HttpContext.Current.Response.Clear();
                    System.Web.HttpContext.Current.Response.ClearHeaders();
                    System.Web.HttpContext.Current.Response.Buffer = false;
                    System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
                    System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.UTF8));
                    System.Web.HttpContext.Current.Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
                    System.Web.HttpContext.Current.Response.WriteFile(DownloadFile.FullName);
                    System.Web.HttpContext.Current.Response.Flush();
                    System.Web.HttpContext.Current.Response.End();
          } 上传ECXEL文件后,下载的时候,直接打开,出现“发生了DDL错误,并且该错误的说明由于太长不能显示。如果文件名或者路径太长,请重新命名该文件或者将文件复制到其他文件中”。求解决方法。
              

解决方案 »

  1.   

    fileupload.ftpwebrequest上传
    Response.WriteFile等实现下载
    string path = Server.MapPath("~/") + "";
    Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.GetEncoding("utf-8")) );
    Response.ContentType = "application/octet-stream";
    Response.WriteFile("" + path + "");
    Response.End();
      

  2.   

    你应该在新ashx页面中写这些代码。或者是aspx页面,下面是ashx的例子:HttpContext context= System.Web.HttpContext.Current;
    String FullFileName = context.Server.MapPath("\\file\\1.txt");
    FileInfo Fi = new FileInfo(filePath);
    if (Fi.Exists)
    {
        FileStream fs = new FileStream(filePath, FileMode.Open);
        byte[] bytes = new byte[(int)fs.Length];
        fs.Read(bytes, 0, bytes.Length);
        fs.Close();
        context.Response.ContentType = "application/octet-stream";//通知浏览器下载文件而不是打开
        context.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8));
        context.Response.BinaryWrite(bytes);
        context.Response.Flush();
        context.Response.End();
    }