如题,代码如下:string V_newname = "新打开文件.doc";
System.IO.FileStream   MyFileStream   =new   FileStream(@"d:\客户信息.doc", System.IO.FileMode.Open, System.IO.FileAccess.Read,System.IO.FileShare.Read);    
long   FileSize   =   MyFileStream.Length;    
byte[]   Buffer   =   new   byte[(int)FileSize];   
MyFileStream.Read(Buffer,   0,   (int)FileSize);    
MyFileStream.Close();    
Response.Clear();
Response.Buffer= true;
Response.AppendHeader("Content-Type", "application/msword");
Response.AppendHeader("Content-Disposition", "inline;filename=" +  HttpUtility.UrlEncode(V_newname));
Response.BinaryWrite(Buffer); 
Response.End();
执行之后,在IE中直接嵌套了Word模板,可并没有接受d:\客户信息.doc中的内容,而是一个空白的Word内容。不过,这仅是在office2000中的效果,而在office xp中却正常。类似excel文件也一样,请问,如何解决这个问题?谢谢

解决方案 »

  1.   

    有没有人碰到过这样的问题呢?还是Office2000的BUG?我在网上找了些Office2000的补丁安装了还是一样,郁闷
      

  2.   

    试试:string V_newname = "新打开文件.doc";
    Response.Clear();
    Response.Buffer= true;
    Response.AppendHeader("Content-Type", "application/msword");
    Response.AppendHeader("Content-Disposition", "inline;filename=" +  HttpUtility.UrlEncode(V_newname));
    Response.WriteFile(V_filePath + "\\" + V_fileName);
    Response.End();
      

  3.   

    直接让下载到本地打开吧 
    Response.AddHeader("Content-Disposition", "attachment;filename="+filename);
      

  4.   

    直接下载是需要提供的,但我们的系统中,附件数可能比较多,客户不希望每查看一个附件都得下载之后才能打开
    而且,有些文件比较机密,是不希望打开之后在机器上留下痕迹的。比如通过调用Word程序直接在Word打开doc文件,那word的最近打开文件列表中就会留下记录,而且打开的文件在IE的临时文件夹中也存在副本。
    但通过IE内嵌Word就不会有这样的问题,却在Office2000中接收不到打开文件的数据,仅是个空文档。如何解决??
      

  5.   

    网上找到的一段代码://打开要下载的文件
    System.IO.FileStream r = new System.IO.FileStream(FileName, System.IO.FileMode.Open);
    //设置基本信息
                 Response.Buffer = false;
                 Response.AddHeader("Connection", "Keep-Alive");
                 Response.ContentType = "application/octet-stream";
                 Response.AddHeader("Content-Disposition", "attachment;filename=" + System.IO.Path.GetFileName(FileName));
                 Response.AddHeader("Content-Length", r.Length.ToString());              
                 while (true)
                 {
                     //开辟缓冲区空间
                     byte[] buffer = new byte[1024];
                     //读取文件的数据
                     int leng = r.Read(buffer, 0, 1024);
                     if (leng == 0)//到文件尾,结束
                         break;
                     if (leng == 1024)//读出的文件数据长度等于缓冲区长度,直接将缓冲区数据写入
                         Response.BinaryWrite(buffer);
                     else
                     {
                         //读出文件数据比缓冲区小,重新定义缓冲区大小,只用于读取文件的最后一个数据块
                         byte[] b = new byte[leng];
                         for (int i = 0; i < leng; i++)
                                 b[i] = buffer[i];
                         Response.BinaryWrite(b);
                     }
                 }
                 r.Close();//关闭下载文件
                 Response.End();//结束文件下载
      

  6.   

    把IE的安全性调低,并把word的宏安全放低