如题,代码如下: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文件也一样,请问,如何解决这个问题?谢谢
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文件也一样,请问,如何解决这个问题?谢谢
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();
Response.AddHeader("Content-Disposition", "attachment;filename="+filename);
而且,有些文件比较机密,是不希望打开之后在机器上留下痕迹的。比如通过调用Word程序直接在Word打开doc文件,那word的最近打开文件列表中就会留下记录,而且打开的文件在IE的临时文件夹中也存在副本。
但通过IE内嵌Word就不会有这样的问题,却在Office2000中接收不到打开文件的数据,仅是个空文档。如何解决??
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();//结束文件下载