为这个问题困扰了很多天了,很多方法都试过了,试了都没有结果。大家对这个问题不知道有什么见解或好的解决方法,不惜高分相送,分不够再加!!!
25 个解决方案
#1
可以看看:
http://dotnet.aspx.cc/ShowDetail.aspx?id=13C874E4-7FC7-4FD1-8CF6-DE9EF4469A9C
http://dotnet.aspx.cc/ShowDetail.aspx?id=13C874E4-7FC7-4FD1-8CF6-DE9EF4469A9C
#2
不知道你的下载功能代码是怎么写的
如果是类似这种
context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
context.Response.AppendHeader("Content-Disposition","attachment;filename=FileName.doc");
context.Response.ContentType = "application/ms-word";
context.Response.BinaryWrite(content);
context.Response.End();
-----------------------------------
把这行 context.Response.AppendHeader("Content-Disposition","attachment;filename=FileName.doc");
的attachment 改成 inline
前提是客户端装了 word
如果是类似这种
context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
context.Response.AppendHeader("Content-Disposition","attachment;filename=FileName.doc");
context.Response.ContentType = "application/ms-word";
context.Response.BinaryWrite(content);
context.Response.End();
-----------------------------------
把这行 context.Response.AppendHeader("Content-Disposition","attachment;filename=FileName.doc");
的attachment 改成 inline
前提是客户端装了 word
#3
我的下载代码如下:
/// <summary>
/// 打开或下载服务器上的文件
/// </summary>
/// <param name="strFileName">打开或要下载的文件名</param>
/// <param name="flag">标志。1表示可以下载,0表示只能直接打开</param>
private void OpenDownFile(string strFileName,int flag)
{
string strExt = strFileName.Substring (strFileName.LastIndexOf (".")+1) ;
DownFiles.GetBinaryFile down = new DocumentMg.DownFiles.GetBinaryFile () ;
string strContentType = down.GetFileType (strExt) ; //得到文件在网页中传输的类型
byte[] file = down.GetFile (strFileName);
if (file.Length == 0)
{
Response.Redirect ("../sys_message/sys_message.aspx?id=114") ;
}
///转换为支持存储区为内存的流
System.IO.MemoryStream memStream = new System.IO.MemoryStream(file);
Response.Clear();
Response.Charset = "utf-8";
Response.Buffer = true;
if (flag == 1) //下载指定的文件
{
Response.ContentType = "application/octet-stream";
Response.AddHeader("content-disposition","attachment;filename=" + HttpUtility.UrlEncode(strFileName.Substring (strFileName.LastIndexOf ("\\") + 1),System.Text .Encoding .UTF8 ));
Response.BinaryWrite (file) ;
}
else if (flag == 0) //直接在浏览器中打开文件
{
Response.ContentType = strContentType ;
Response.AppendHeader ("content-disposition","inline;filename=" + HttpUtility.UrlEncode(strFileName.Substring (strFileName.LastIndexOf ("\\") + 1),System.Text .Encoding .UTF8 ));
Response.BinaryWrite (file) ;
}
Response.End () ;
}
其中DownFiles是webservice的一个引用对象,从另外一台服务器上取得数据流,然后把数据流写入到页面,但是即使是flag为0时浏览器还会弹出是否打开或保存的对话框,然后对话框里有个勾选项:是否打开此类文件时总是询问。我想把这个对话框给去掉,就是当程序不提供下载的时候不让这个对话框给弹出来而是直接在浏览器中打开。为什么总是弹出来啊,不知道是不是有什么设置还是什么,极度郁闷啊!!!
/// <summary>
/// 打开或下载服务器上的文件
/// </summary>
/// <param name="strFileName">打开或要下载的文件名</param>
/// <param name="flag">标志。1表示可以下载,0表示只能直接打开</param>
private void OpenDownFile(string strFileName,int flag)
{
string strExt = strFileName.Substring (strFileName.LastIndexOf (".")+1) ;
DownFiles.GetBinaryFile down = new DocumentMg.DownFiles.GetBinaryFile () ;
string strContentType = down.GetFileType (strExt) ; //得到文件在网页中传输的类型
byte[] file = down.GetFile (strFileName);
if (file.Length == 0)
{
Response.Redirect ("../sys_message/sys_message.aspx?id=114") ;
}
///转换为支持存储区为内存的流
System.IO.MemoryStream memStream = new System.IO.MemoryStream(file);
Response.Clear();
Response.Charset = "utf-8";
Response.Buffer = true;
if (flag == 1) //下载指定的文件
{
Response.ContentType = "application/octet-stream";
Response.AddHeader("content-disposition","attachment;filename=" + HttpUtility.UrlEncode(strFileName.Substring (strFileName.LastIndexOf ("\\") + 1),System.Text .Encoding .UTF8 ));
Response.BinaryWrite (file) ;
}
else if (flag == 0) //直接在浏览器中打开文件
{
Response.ContentType = strContentType ;
Response.AppendHeader ("content-disposition","inline;filename=" + HttpUtility.UrlEncode(strFileName.Substring (strFileName.LastIndexOf ("\\") + 1),System.Text .Encoding .UTF8 ));
Response.BinaryWrite (file) ;
}
Response.End () ;
}
其中DownFiles是webservice的一个引用对象,从另外一台服务器上取得数据流,然后把数据流写入到页面,但是即使是flag为0时浏览器还会弹出是否打开或保存的对话框,然后对话框里有个勾选项:是否打开此类文件时总是询问。我想把这个对话框给去掉,就是当程序不提供下载的时候不让这个对话框给弹出来而是直接在浏览器中打开。为什么总是弹出来啊,不知道是不是有什么设置还是什么,极度郁闷啊!!!
#4
Response.AddHeader("content-disposition","attachment;filename=" + HttpUtility.UrlEncode(strFileName.Substring (strFileName.LastIndexOf ("\\") + 1),System.Text .Encoding .UTF8 ));
Response.BinaryWrite (file) ;
-> replace " attachment" to "inline"
Response.BinaryWrite (file) ;
-> replace " attachment" to "inline"
#5
ld_thinking(懒得想) :
当flag=0时是你说的那样啊,为什么还会出现问题呢
当flag=0时是你说的那样啊,为什么还会出现问题呢
#6
怎么没人来看呢,自己顶一下!
#7
自己再up
#8
如果没装,做什么工人都是白搭
#9
up
#10
当然是安装了office了啦,就是不能直接在浏览器中打开,而是每次都弹出一个提示框,提示是否打开还是保存,能不能控制直接打开呢,找了很久还是没找到办法,也试了很多方法还是没有解决.
请大家给点意见撒!~
请大家给点意见撒!~
#11
可以的。判断一下要打开的文件是否能用浏览器直接打开,如果能则打开,如果不能则下载。
#12
我增经遇到过类似的一个问题,也是在转office格式文档时,会提示保存或打开,搞了好久,后来突然想到是不是跟office有问题,于是装了一个补钉(SR-1),就可以了,希望对你有点帮助
#13
忘记说明一下,是office是2000版本的
#14
不知道揭贴了没有,我想再追加一个问题:
就是在网页上潜入这个WORD文件之后怎么才能够屏蔽掉word里面的内容复制?
就是在网页上潜入这个WORD文件之后怎么才能够屏蔽掉word里面的内容复制?
#15
你是不是在iframe中打开了
#16
To:mostice(沉默的羔羊)
我要在网页中打开office文档,如word,excel等。
To:cnjack(龙飞九天)
你说的那个补丁是啥补丁?如果换成是office2003会不会有问题呢,我装的是2003的是会出现这个问题的。
To:LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)
打开文件的链接是在一个框架里,但是点击链接弹出的是一个新的窗体,不属于任何框架的,跟链接在框架里有关系吗???
我要在网页中打开office文档,如word,excel等。
To:cnjack(龙飞九天)
你说的那个补丁是啥补丁?如果换成是office2003会不会有问题呢,我装的是2003的是会出现这个问题的。
To:LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)
打开文件的链接是在一个框架里,但是点击链接弹出的是一个新的窗体,不属于任何框架的,跟链接在框架里有关系吗???
#17
这个是不是微软的安全性考虑而设的呢,真搞不懂!
#18
up
#19
我的office2003不会有问题,我是说win2000+office2000的情况,要给office 2000打补钉SR-1(以后的补钉才叫sp2,sp3等)
#20
如果服务器端没有特别映射,那只是客户端的问题。
重新安装Office,重新安装IE,重新系统。逐一试试。
祝你好运
重新安装Office,重新安装IE,重新系统。逐一试试。
祝你好运
#21
那像你这么说,我们公司的所有的客户端都要重新安装吗,很多都有这种情况的,难道真的是客户端的问题,还有用其他的浏览器,如熬游也是会弹出来的,真的没办法直接打开吗,郁闷了好久了这个问题
#22
打开“我的电脑”选择“工具”选择“文件夹选项”选择“文件类型”
然后找到对应的文件格式,再修改它的属性
可以控制这种类型的文件是直接打开还是提示下载
当然,前提是电脑里安装了对应的查看软件
然后找到对应的文件格式,再修改它的属性
可以控制这种类型的文件是直接打开还是提示下载
当然,前提是电脑里安装了对应的查看软件
#23
To crying_boy(泪无痕) :
你的这个办法真的是可以让word文档直接在网页中打开,但是对于提供了下载的word文档还是直接打开了,不能控制啊
你的这个办法真的是可以让word文档直接在网页中打开,但是对于提供了下载的word文档还是直接打开了,不能控制啊
#24
可以控制了,谢谢!~!
#25
揭帖!谢谢各位!
#1
可以看看:
http://dotnet.aspx.cc/ShowDetail.aspx?id=13C874E4-7FC7-4FD1-8CF6-DE9EF4469A9C
http://dotnet.aspx.cc/ShowDetail.aspx?id=13C874E4-7FC7-4FD1-8CF6-DE9EF4469A9C
#2
不知道你的下载功能代码是怎么写的
如果是类似这种
context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
context.Response.AppendHeader("Content-Disposition","attachment;filename=FileName.doc");
context.Response.ContentType = "application/ms-word";
context.Response.BinaryWrite(content);
context.Response.End();
-----------------------------------
把这行 context.Response.AppendHeader("Content-Disposition","attachment;filename=FileName.doc");
的attachment 改成 inline
前提是客户端装了 word
如果是类似这种
context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
context.Response.AppendHeader("Content-Disposition","attachment;filename=FileName.doc");
context.Response.ContentType = "application/ms-word";
context.Response.BinaryWrite(content);
context.Response.End();
-----------------------------------
把这行 context.Response.AppendHeader("Content-Disposition","attachment;filename=FileName.doc");
的attachment 改成 inline
前提是客户端装了 word
#3
我的下载代码如下:
/// <summary>
/// 打开或下载服务器上的文件
/// </summary>
/// <param name="strFileName">打开或要下载的文件名</param>
/// <param name="flag">标志。1表示可以下载,0表示只能直接打开</param>
private void OpenDownFile(string strFileName,int flag)
{
string strExt = strFileName.Substring (strFileName.LastIndexOf (".")+1) ;
DownFiles.GetBinaryFile down = new DocumentMg.DownFiles.GetBinaryFile () ;
string strContentType = down.GetFileType (strExt) ; //得到文件在网页中传输的类型
byte[] file = down.GetFile (strFileName);
if (file.Length == 0)
{
Response.Redirect ("../sys_message/sys_message.aspx?id=114") ;
}
///转换为支持存储区为内存的流
System.IO.MemoryStream memStream = new System.IO.MemoryStream(file);
Response.Clear();
Response.Charset = "utf-8";
Response.Buffer = true;
if (flag == 1) //下载指定的文件
{
Response.ContentType = "application/octet-stream";
Response.AddHeader("content-disposition","attachment;filename=" + HttpUtility.UrlEncode(strFileName.Substring (strFileName.LastIndexOf ("\\") + 1),System.Text .Encoding .UTF8 ));
Response.BinaryWrite (file) ;
}
else if (flag == 0) //直接在浏览器中打开文件
{
Response.ContentType = strContentType ;
Response.AppendHeader ("content-disposition","inline;filename=" + HttpUtility.UrlEncode(strFileName.Substring (strFileName.LastIndexOf ("\\") + 1),System.Text .Encoding .UTF8 ));
Response.BinaryWrite (file) ;
}
Response.End () ;
}
其中DownFiles是webservice的一个引用对象,从另外一台服务器上取得数据流,然后把数据流写入到页面,但是即使是flag为0时浏览器还会弹出是否打开或保存的对话框,然后对话框里有个勾选项:是否打开此类文件时总是询问。我想把这个对话框给去掉,就是当程序不提供下载的时候不让这个对话框给弹出来而是直接在浏览器中打开。为什么总是弹出来啊,不知道是不是有什么设置还是什么,极度郁闷啊!!!
/// <summary>
/// 打开或下载服务器上的文件
/// </summary>
/// <param name="strFileName">打开或要下载的文件名</param>
/// <param name="flag">标志。1表示可以下载,0表示只能直接打开</param>
private void OpenDownFile(string strFileName,int flag)
{
string strExt = strFileName.Substring (strFileName.LastIndexOf (".")+1) ;
DownFiles.GetBinaryFile down = new DocumentMg.DownFiles.GetBinaryFile () ;
string strContentType = down.GetFileType (strExt) ; //得到文件在网页中传输的类型
byte[] file = down.GetFile (strFileName);
if (file.Length == 0)
{
Response.Redirect ("../sys_message/sys_message.aspx?id=114") ;
}
///转换为支持存储区为内存的流
System.IO.MemoryStream memStream = new System.IO.MemoryStream(file);
Response.Clear();
Response.Charset = "utf-8";
Response.Buffer = true;
if (flag == 1) //下载指定的文件
{
Response.ContentType = "application/octet-stream";
Response.AddHeader("content-disposition","attachment;filename=" + HttpUtility.UrlEncode(strFileName.Substring (strFileName.LastIndexOf ("\\") + 1),System.Text .Encoding .UTF8 ));
Response.BinaryWrite (file) ;
}
else if (flag == 0) //直接在浏览器中打开文件
{
Response.ContentType = strContentType ;
Response.AppendHeader ("content-disposition","inline;filename=" + HttpUtility.UrlEncode(strFileName.Substring (strFileName.LastIndexOf ("\\") + 1),System.Text .Encoding .UTF8 ));
Response.BinaryWrite (file) ;
}
Response.End () ;
}
其中DownFiles是webservice的一个引用对象,从另外一台服务器上取得数据流,然后把数据流写入到页面,但是即使是flag为0时浏览器还会弹出是否打开或保存的对话框,然后对话框里有个勾选项:是否打开此类文件时总是询问。我想把这个对话框给去掉,就是当程序不提供下载的时候不让这个对话框给弹出来而是直接在浏览器中打开。为什么总是弹出来啊,不知道是不是有什么设置还是什么,极度郁闷啊!!!
#4
Response.AddHeader("content-disposition","attachment;filename=" + HttpUtility.UrlEncode(strFileName.Substring (strFileName.LastIndexOf ("\\") + 1),System.Text .Encoding .UTF8 ));
Response.BinaryWrite (file) ;
-> replace " attachment" to "inline"
Response.BinaryWrite (file) ;
-> replace " attachment" to "inline"
#5
ld_thinking(懒得想) :
当flag=0时是你说的那样啊,为什么还会出现问题呢
当flag=0时是你说的那样啊,为什么还会出现问题呢
#6
怎么没人来看呢,自己顶一下!
#7
自己再up
#8
如果没装,做什么工人都是白搭
#9
up
#10
当然是安装了office了啦,就是不能直接在浏览器中打开,而是每次都弹出一个提示框,提示是否打开还是保存,能不能控制直接打开呢,找了很久还是没找到办法,也试了很多方法还是没有解决.
请大家给点意见撒!~
请大家给点意见撒!~
#11
可以的。判断一下要打开的文件是否能用浏览器直接打开,如果能则打开,如果不能则下载。
#12
我增经遇到过类似的一个问题,也是在转office格式文档时,会提示保存或打开,搞了好久,后来突然想到是不是跟office有问题,于是装了一个补钉(SR-1),就可以了,希望对你有点帮助
#13
忘记说明一下,是office是2000版本的
#14
不知道揭贴了没有,我想再追加一个问题:
就是在网页上潜入这个WORD文件之后怎么才能够屏蔽掉word里面的内容复制?
就是在网页上潜入这个WORD文件之后怎么才能够屏蔽掉word里面的内容复制?
#15
你是不是在iframe中打开了
#16
To:mostice(沉默的羔羊)
我要在网页中打开office文档,如word,excel等。
To:cnjack(龙飞九天)
你说的那个补丁是啥补丁?如果换成是office2003会不会有问题呢,我装的是2003的是会出现这个问题的。
To:LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)
打开文件的链接是在一个框架里,但是点击链接弹出的是一个新的窗体,不属于任何框架的,跟链接在框架里有关系吗???
我要在网页中打开office文档,如word,excel等。
To:cnjack(龙飞九天)
你说的那个补丁是啥补丁?如果换成是office2003会不会有问题呢,我装的是2003的是会出现这个问题的。
To:LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)
打开文件的链接是在一个框架里,但是点击链接弹出的是一个新的窗体,不属于任何框架的,跟链接在框架里有关系吗???
#17
这个是不是微软的安全性考虑而设的呢,真搞不懂!
#18
up
#19
我的office2003不会有问题,我是说win2000+office2000的情况,要给office 2000打补钉SR-1(以后的补钉才叫sp2,sp3等)
#20
如果服务器端没有特别映射,那只是客户端的问题。
重新安装Office,重新安装IE,重新系统。逐一试试。
祝你好运
重新安装Office,重新安装IE,重新系统。逐一试试。
祝你好运
#21
那像你这么说,我们公司的所有的客户端都要重新安装吗,很多都有这种情况的,难道真的是客户端的问题,还有用其他的浏览器,如熬游也是会弹出来的,真的没办法直接打开吗,郁闷了好久了这个问题
#22
打开“我的电脑”选择“工具”选择“文件夹选项”选择“文件类型”
然后找到对应的文件格式,再修改它的属性
可以控制这种类型的文件是直接打开还是提示下载
当然,前提是电脑里安装了对应的查看软件
然后找到对应的文件格式,再修改它的属性
可以控制这种类型的文件是直接打开还是提示下载
当然,前提是电脑里安装了对应的查看软件
#23
To crying_boy(泪无痕) :
你的这个办法真的是可以让word文档直接在网页中打开,但是对于提供了下载的word文档还是直接打开了,不能控制啊
你的这个办法真的是可以让word文档直接在网页中打开,但是对于提供了下载的word文档还是直接打开了,不能控制啊
#24
可以控制了,谢谢!~!
#25
揭帖!谢谢各位!