首先你的在数据库中保存你的文件名称,比如filename字段,然后可以这样:
Page.Response.Buffer=true;
Page.Response.Clear();
Page.Response.ContentType="Application/unknown";
Response.AddHeader("Content-Disposition","attachment; filename=" +
        ds.Tables[0].Rows[0]["filename"].ToString() + ";");

Page.Response.BinaryWrite(file);
Page.Response.Flush();
Page.Response.End();

解决方案 »

  1.   

    string filePath="c://abc.doc";//要下载的文件
    sttring strFileName="test.doc"; 
    Response.AppendHeader("Content-Disposition","attachment; filename="+HttpUtility.UrlEncode(strFileName,System.Text.Encoding.UTF8));
    Response.WriteFile(filePath);
    Response.End();你的两个问题都可以这样解决
      

  2.   

    哦string filePath="c:\\abc.doc";
      

  3.   

    不错,不错,多谢了。把前面两个帖子的一综合,俺已经完成了这些功能了哦!!!不过,还有一个问题,请教啊!!就是我要下载的文件,不是我保存到数据库中间去的!是有delphi的一个ole控件保存到数据库里面的,所以他好像在文件的数据前面加了一个12个字节的代码!我下载的时候可以砍掉这个代码,然后stream输出到ie。但是我现在还需要可以上传一个文件,到数据库,,,然后delphi的那个ole控件可以打开,那就以为着我必须要可以把这个头给加上。请教dotnet里面可以加上这个头吗!!
      

  4.   

    你的头只要是能够转化为byte[]类型的二进制流,就可以添加到文件的任何地方。
    你既然会砍掉,那也一定会增加了
      

  5.   

    问题,就是那个delphi的olecontainer,好像他是调用word,打开以后,然后把这个东西这个(包括word打开时候加的字节码)保存到数据库里面去的,所以会出现一个头,我想请教一下,dotnet里面是不是也有这个样子的控件,或者是组件呢!可以把一个word文件,用word打个包然后保存到数据库里面呢??
      

  6.   

    不知道了
    为什么不直接把word放在数据库中呢。
      

  7.   

    因为那个我们还需要在delphi开发的cs段那边打开这个word文档,编辑!他们这个打开word文档编辑,全部是使用olecontainer这个组件的啊,,所以没有那个头,,,那个组件打不开word。倒霉啊。!!!!