日期:2014-05-18  浏览次数:20384 次

求助:一个关于asp.net实现文件下载程序的问题
我用C#写了这样一段文件下载的函数:
#region private void FileDownLoad(string filename)
  /// <summary>
  /// 用户下载文件
  /// </summary>
  /// <param name="filename">下载文件的路径</param>
  private void FileDownLoad(string filename)
  {
  string destFileName = filename;
  destFileName = Server.MapPath("./") + destFileName;
  destFileName = Server.UrlDecode(destFileName);

  if (File.Exists(destFileName))
  {
  FileInfo fi = new FileInfo(filename);
  Response.Clear();
  Response.ClearHeaders();
  Response.Buffer = true;
  Response.Charset = "GB2312";

  //添加头信息,为 "文件下载/另存为 "对话框指定默认文件名 
  Response.AppendHeader("Content-Disposition", "attachment;filename="
  + HttpUtility.UrlEncode(Path.GetFileName(destFileName),
  System.Text.Encoding.UTF8));
  Response.AppendHeader("Content-Length", fi.Length.ToString());
  Response.ContentType = "text/plain";
  Response.Filter.Close();
  Response.WriteFile(destFileName);
  Response.Flush();
  Response.End();
  }
  else
  {
  Response.Write("<script language = javascript>alert('下载出错')</script>");
  }
  }
  #endregion
但是在用迅雷测试时发现迅雷的进度条始终显示为0,网际快车也是这样。请问这是怎么回事?哪位高手能否将上面的代码改动一下解决迅雷下载时进度条显示为0的问题。

------解决方案--------------------
用迅雷测试?不明白!
------解决方案--------------------
下载工具的下载好像对ASPX的解析不太专业
因为我们在用ASP.net编写的下载文件一般都是有通过代码转换,文件并没有实际的URI地址
但是常规的下载方式一般是直接访问文件的,或者能够解析类似ASP页面的URI获得文件地址
除非你的ASPX页面返回给迅雷的是一种URI形式或者它能解析的具体文件地址
否则下载工具不会下载你动态生成的文件。

------解决方案--------------------
关注+学习!!
帮你顶!!