如何实现打开文件、但不让用户保存?

LINGO_Tecco 2010-06-17 10:43:04
在我们的JAVA WEB系统里有一些重要文件,可以让用户打开,但不能让用户保存和打印。现在我通过一个超链接可以实现用户打开文件,但打开文件之前IE都有一个对话框,让用户选择是打开、保存、取消。如果这样子的话用户就可以保存此文件了,大家有什么好方法可以做到我上述的功能?如swing, javascript或其它方面的?
PS:本人只会java WEB的编程。
...全文
309 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wujyfuck 2012-08-30
  • 打赏
  • 举报
回复
<table border="0">
<td>
<p style="margin-top: -57px; margin-bottom: 0">
<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" id="Pdf1" width="730" height="606">
<param name="_Version" value="327680">
<param name="_ExtentX" value="19315">
<param name="_ExtentY" value="16034">
<param name="_StockProps" value="0">
<param name="SRC" value="1.pdf">
</object>
</td>
</tr>
</table>

我在jsp加这段代码,1.pdf也放在同级目录下 弱弱都问一下怎么不显示呢?
LINGO_Tecco 2010-06-18
  • 打赏
  • 举报
回复
我现在网页中内嵌PDF的方法显示PDF,但PDF有“另存为”按钮,于是我想用一个图片把这个按钮遮住,这个图片就相当于悬浮广告的效果,这个效果的代码我是网上摘用的,结果是这个图片在这个PDF文件的后面,起不了遮住按钮的作用。大家帮我看看怎么才能把这个图片显示在上面???

<html>
<head>标题</head>
<body>
<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" width="800" height="1050" border="0">
<param name="_Version" value="65539">
<param name="_ExtentX" value="20108">
<param name="_ExtentY" value="10866">
<param name="_StockProps" value="0">
<param name="SRC" value="1.pdf">
</object>

</body>
</html>
<script>
var brOK=false;
var mie=false;
var vmin=2;
var vmax=5;
var vr=1;
var timer1;
var softhyads;
var isflash=0; //是否为FLASH文件的漂浮 1=是 0=否
var pic="google.gif"; //图片的地址
var alt="谷歌Google广告"; //鼠标放在图片上时显示的提示文字
var url="http://www.google.com"; //图片链接的地址
var flashurl="http://"; //FLASH文件的路径
var Wimg=170; //图像的宽度
var Himg=65; //图像的高度
function movechip(chipname)
{
if(brOK)
{
eval("chip="+chipname);
if(!mie)
{
pageX=window.pageXOffset;
pageW=window.innerWidth;
pageY=window.pageYOffset;
pageH=window.innerHeight;
}
else
{
pageX=window.document.body.scrollLeft;
pageW=window.document.body.offsetWidth-8;
pageY=window.document.body.scrollTop;
pageH=window.document.body.offsetHeight;
}
chip.xx=chip.xx+chip.vx;
chip.yy=chip.yy+chip.vy;
chip.vx+=vr*(Math.random()-0.5);
chip.vy+=vr*(Math.random()-0.5);
if(chip.vx>(vmax+vmin)) chip.vx=(vmax+vmin)*2-chip.vx;
if(chip.vx<(-vmax-vmin)) chip.vx=(-vmax-vmin)*2-chip.vx;
if(chip.vy>(vmax+vmin)) chip.vy=(vmax+vmin)*2-chip.vy;
if(chip.vy<(-vmax-vmin)) chip.vy=(-vmax-vmin)*2-chip.vy;
if(chip.xx<=pageX)
{
chip.xx=pageX;
chip.vx=vmin+vmax*Math.random();
}
if(chip.xx>=pageX+pageW-chip.w)
{
chip.xx=pageX+pageW-chip.w;
chip.vx=-vmin-vmax*Math.random();
}
if(chip.xx>=680)
{
chip.xx=chip.xx-20;
chip.vx=-vmin-vmax*Math.random();
}
if(chip.yy<=pageY)
{
chip.yy=pageY;
chip.vy=vmin+vmax*Math.random();
}
if(chip.yy>=pageY+pageH-chip.h)
{
chip.yy=pageY+pageH-chip.h;
chip.vy=-vmin-vmax*Math.random();
}
if(!mie)
{
eval('document.'+chip.named+'.top ='+chip.yy);
eval('document.'+chip.named+'.left='+chip.xx);
}
else
{
eval('document.all.'+chip.named+'.style.pixelLeft='+chip.xx);
eval('document.all.'+chip.named+'.style.pixelTop ='+chip.yy);
}
//chip.timer1=setTimeout("movechip('"+chip.named+"')",80);
}
}

function stopme(chipname)
{
if(brOK)
{
eval("chip="+chipname);
if(chip.timer1!=null)
{
clearTimeout(chip.timer1)
}
}
}

function softhyads()
{
if(navigator.appName.indexOf("Internet Explorer")!=-1)
{
if(parseInt(navigator.appVersion.substring(0,1))>=4) brOK=navigator.javaEnabled();mie=true;
}
if(navigator.appName.indexOf("Netscape")!=-1)
{
if(parseInt(navigator.appVersion.substring(0,1))>=4) brOK=navigator.javaEnabled();
}
softhyads.named="softhyads";
softhyads.vx=vmin+vmax*Math.random();
softhyads.vy=vmin+vmax*Math.random();
softhyads.w=1;
softhyads.h=1;
softhyads.xx=0;
softhyads.yy=0;
softhyads.timer1=null;
movechip("softhyads");
}

document.write('<div id="softhyads" style="height:49px;left:178px;position:absolute;top:1237px;width:70px; z-index:1000">');
if (isflash>0)
{
document.write("<EMBED src='" + flashurl + "' quality=high WIDTH='" + Wimg + "' HEIGHT='" + Himg + "' TYPE='application/x-shockwave-flash'></EMBED>");
}
else
{
document.write("<a href='" + url + "' target=_blank onmouseover=stopme('softhyads'); onmouseout=movechip('softhyads');>");
document.write("<img src='" + pic + "' alt='" + alt + "' border=0 width='" + Wimg + "' height='" + Himg + "'></a>");
}
document.write("</div>");
softhyads();
</script>
LINGO_Tecco 2010-06-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yy_dan 的回复:]
引用 8 楼 fog911811 的回复:
Java code
public class ReadFileServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse response)
throws ServletException, IOException {
………
[/Quote]
但那些重要不但只是DOC文件,还有Excel和PDF的,那PDF怎么办呢?里面很多图片和格式的。
LINGO_Tecco 2010-06-18
  • 打赏
  • 举报
回复
<table border="0">
<td>
<p style="margin-top: -57px; margin-bottom: 0">
<object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000" id="Pdf1" width="730" height="606">
<param name="_Version" value="327680">
<param name="_ExtentX" value="19315">
<param name="_ExtentY" value="16034">
<param name="_StockProps" value="0">
<param name="SRC" value="1.pdf">
</object>
</td>
</tr>
</table>

网上有个高手用了变通的方法,可以隐藏掉“另保存为”按钮了,真的感谢那位仁兄。。。。同时用以下JS可以实现此网页禁用右键
<script language="JavaScript">
<!--

if (window.Event)
document.captureEvents(Event.MOUSEUP);

function nocontextmenu()
{
event.cancelBubble = true
event.returnValue = false;

return false;
}

function norightclick(e)
{
if (window.Event)
{
if (e.which == 2 || e.which == 3)
return false;
}
else
if (event.button == 2 || event.button == 3)
{
event.cancelBubble = true
event.returnValue = false;
return false;
}

}

document.oncontextmenu = nocontextmenu; // for IE5+
document.onmousedown = norightclick; // for all others
//-->
</script>
LINGO_Tecco 2010-06-17
  • 打赏
  • 举报
回复
public class ReadFileServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("--------------ReadFileServlet---");
String filename = "abc.doc";
String filepath = "\\oa\\upload\\package_method\\";

// 设置响应头和下载保存的文件名
response.setContentType("APPLICATION/msword");
response.setHeader("Content-Disposition", "inline");


// 打开指定文件的流信息
File f = new File("D:\\jsp\\oa\\upload\\package_method\\abc.doc");
java.io.FileInputStream fileIn = new java.io.FileInputStream(f);

// 写出流信息
int i;
ServletOutputStream sos = response.getOutputStream();
int i_length = fileIn.available();
byte buf_1[] = new byte[i_length];
while (i_length > 0) {
fileIn.read(buf_1);
sos.write(buf_1);
i_length = fileIn.available();
}
sos.close();
fileIn.close();
}

}

我用servlet来做,在显示之前IE还是弹出一个对话框,来让用户选择保存,打开和取消的操作。
LINGO_Tecco 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 izard999 的回复:]
不让复制在js中屏蔽保存和复制就好了嘛..!
[/Quote]

这个有点意思,但是应该怎么做呢?请赐教了。
izard999 2010-06-17
  • 打赏
  • 举报
回复
不让复制在js中屏蔽保存和复制就好了嘛..!
dr_lou 2010-06-17
  • 打赏
  • 举报
回复
文件内容做成图片。图片切成一条条的。让他们下载了也要耗时间拼。
  • 打赏
  • 举报
回复
不让复制,直接把缓存区给设置了就行。因为对于文件来说,复制都是把内容先保存在缓冲区中的。
ronniegxq 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 izard999 的回复:]

引用楼主 fog911811 的回复:
在我们的JAVA WEB系统里有一些重要文件,可以让用户打开,但不能让用户保存和打印。现在我通过一个超链接可以实现用户打开文件,但打开文件之前IE都有一个对话框,让用户选择是打开、保存、取消。如果这样子的话用户就可以保存此文件了,大家有什么好方法可以做到我上述的功能?如swing, javascript或其它方面的?
PS:本人只会java WEB的编……
[/Quote]
另外不让复制内容
izard999 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 fog911811 的回复:]
在我们的JAVA WEB系统里有一些重要文件,可以让用户打开,但不能让用户保存和打印。现在我通过一个超链接可以实现用户打开文件,但打开文件之前IE都有一个对话框,让用户选择是打开、保存、取消。如果这样子的话用户就可以保存此文件了,大家有什么好方法可以做到我上述的功能?如swing, javascript或其它方面的?
PS:本人只会java WEB的编程。
[/Quote]
LZ你说的可以保存是下载文件把.? 如果你要求用户可以打开文件但是不可以保存的话,你就不应该做到文件下载那里去.! 你应该直接在servlet里面读文件,然后返回给用户的只是文件的内容,而不是流
Java技术栈 2010-06-17
  • 打赏
  • 举报
回复
你都已经实现了。。很好啊
水中影子 2010-06-17
  • 打赏
  • 举报
回复

//禁止右键
document.body.oncontextmenu=function(oEvent){
if(document.all){
oEvent=window.event;
oEvent.returnValue=false;
}else{
oEvent.preventDefault();
}
}
xqyky 2010-06-17
  • 打赏
  • 举报
回复
连复制都不让,只能做成图片了。
kurama_mail 2010-06-17
  • 打赏
  • 举报
回复
如果你使用下载方式输出文件流是不能避免“打开”“保存”提示的。
如果使用控件(AxtiveX)可以做到仅打开(具体方案请自行查找你提供文件的类型对应方案)。
surelei 2010-06-17
  • 打赏
  • 举报
回复
web应用,能看到就能打印,所以这种需求一般来说意义不大,因为最简单方法我截屏,然后打印,你怎么办?
yy_dan 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fog911811 的回复:]
Java code
public class ReadFileServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse response)
throws ServletException, IOException {
……
[/Quote]

楼主完全不用搞一个下载的组件啦,就用java操作DOC文件就可以了啦,点击链接的时候去读取一个doc文件,然后把读取到的数据显示到界面,只不过这里要熟悉java怎么操作doc了,只是给点建议,技术方面可以百度下去实现,不难的
LINGO_Tecco 2010-06-17
  • 打赏
  • 举报
回复
有谁能给我一点思路?

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧