none
文件下载 RRS feed

  • 问题

  • 我现在在网站中有个下载专区专供下载,但是在本机当我把迅雷设为默认下载工具时,点击下载,并没有把文件下载下来,而是把当前这个页面下载下来了,是怎么回事?
    2009年9月29日 2:56

答案

  • 你好!

    下面的代码是可行的

    // 1 弹出对话框提示下载文件(不会开新窗口)
    // 2 隐藏路径
    string fPath = Path.Combine(Server.MapPath("Images"), "xxx.htm");
    FileStream fFileStream = new FileStream(fPath, FileMode.Open);
    long fFileSize = fFileStream.Length;
    Context.Response.ContentType = "application/octet-stream";
    Context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + HttpUtility.UrlEncode(Path.GetFileName(fPath), System.Text.Encoding.UTF8) + "\"");
    Context.Response.AddHeader("Content-Length", fFileSize.ToString());
    byte[] fFileBuffer = new byte[fFileSize];
    fFileStream.Read(fFileBuffer, 0, (int)fFileSize);
    fFileStream.Close();
    Context.Response.BinaryWrite(fFileBuffer);
    Context.Response.End();


    知识改变命运,奋斗成就人生!
    2009年9月29日 4:46
    版主

全部回复

  • 你好 直接设置下载页面的ContentType属性 直接输出流
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年9月29日 3:04
    版主
  • 如何设置页面的ContentType属性了?我是新手,代码了?
    2009年9月29日 3:10
  • 你的下载链接和下载代码怎么写的?
    下载的代码网上有很多

    【孟子E章】
    2009年9月29日 3:23
    版主
  •  if (File.Exists(path))
              {
                FileInfo fi = new FileInfo(path);

                HttpContext.Current.Response.Clear();

                // //当要下载的文件名是中文时,需加上HttpUtility.UrlEncode
                HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fi.Name));
                HttpContext.Current.Response.AddHeader("Content-Length", fi.Length.ToString());
                HttpContext.Current.Response.ContentType = "application/octet-stream";
                HttpContext.Current.Response.WriteFile(fi.FullName);
                HttpContext.Current.Response.End();
              }
              else
              {
                MessageBox.Show(this, "文件不存在");
              }
            }
            catch (Exception _ex)
            {
              MessageBox.Show(this, _ex.Message);
            }
    这是我的代码,在当前页面下载附件,并不有下载下来,而是把我当前这个页面下载下来了,如DownLoad.aspx,而不是一个txt的文件

    2009年9月29日 4:09
  • 你好!

    下面的代码是可行的

    // 1 弹出对话框提示下载文件(不会开新窗口)
    // 2 隐藏路径
    string fPath = Path.Combine(Server.MapPath("Images"), "xxx.htm");
    FileStream fFileStream = new FileStream(fPath, FileMode.Open);
    long fFileSize = fFileStream.Length;
    Context.Response.ContentType = "application/octet-stream";
    Context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + HttpUtility.UrlEncode(Path.GetFileName(fPath), System.Text.Encoding.UTF8) + "\"");
    Context.Response.AddHeader("Content-Length", fFileSize.ToString());
    byte[] fFileBuffer = new byte[fFileSize];
    fFileStream.Read(fFileBuffer, 0, (int)fFileSize);
    fFileStream.Close();
    Context.Response.BinaryWrite(fFileBuffer);
    Context.Response.End();


    知识改变命运,奋斗成就人生!
    2009年9月29日 4:46
    版主