试试这个哦
private void Button1_Click(object sender, System.EventArgs e)
{
    Stream iStream = null;
    string FilePath="f:/clips/Test/Test2.dll";
    iStream = new FileStream(FilePath,FileMode.Open,FileAccess.Read,FileShare.Read);
    Response.Clear();
    Response.ContentType = "application/ms-download";
    string FileName="下载速度测试";
    Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8));
    Response.AddHeader("Content-Length", iStream.Length.ToString());
    Response.Flush();
    int len=1;
    while(len>0)
    {
byte[] buffer=new Byte[65532];
len = iStream.Read(buffer,0,65532);
Response.OutputStream.Write(buffer,0,len);
Response.Flush();
     }
}

解决方案 »

  1.   

    没错,所有二进制文件都存储在Image类型的字段(MS SQL Server),把它读到一个byte[]里,再用流转回来就行了.
      

  2.   

    先从数据库中读取文件内容到一个Byte[]中,然后Response出去,就可以了。
      

  3.   

    http://support.microsoft.com/default.aspx?scid=kb;EN-US;309158这是微软的解决方法,我用这个。
      

  4.   

    private void Button1_Click(object sender, System.EventArgs e)
    {
        Stream iStream = null;
        string FilePath="f:/clips/Test/Test2.dll";
        iStream = new FileStream(FilePath,FileMode.Open,FileAccess.Read,FileShare.Read);
        Response.Clear();
        Response.ContentType = "application/ms-download";//  1. 干什么用的?
        string FileName="下载速度测试";
        Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8));// 2.干什么用的?
        Response.AddHeader("Content-Length", iStream.Length.ToString());//3.这个呢?
        Response.Flush();//4.这个干吗要flush?
        int len=1;
        while(len>0)
        {
    byte[] buffer=new Byte[65532];
    len = iStream.Read(buffer,0,65532);
    Response.OutputStream.Write(buffer,0,len);
    Response.Flush()//5.用了这个之后,会弹出对话框“打开或者保存到”吗?
                             //     }
    }以上有些不明白,能够解释一下吗?
    还有一个问题,把某一个文件转成流之后,这个流里面有关这个文件的名字,大小等信息是否都包括进去了?如果是的话,文件存进数据库和response回来能够有有下面的思路吗?1.存进数据库:
    Stream objStream = txtFileContents.PostedFile.InputStream;
    //txtFileContents.PostedFile为使用浏览对话框所选择的文件
    //byte[] Docbuffer = new byte[intDoclen];
    //文件保存到缓存
    objStream.Read(Docbuffer ,0,intDocLen);
    //缓存将保存到数据库
    .....
    2.把文件从数据库中下载到本地机器
    .....
    byte[] buffer=new Byte[65532];
    len = iStream.Read(buffer,0,65532);
    Response.OutputStream.Write(buffer,0,len);
    Response.Flush();//这个能弹出“打开或者保存到本地磁盘”对话框?
    谢谢指正!!