在我们的JAVA WEB系统里有一些重要文件,可以让用户打开,但不能让用户保存和打印。现在我通过一个超链接可以实现用户打开文件,但打开文件之前IE都有一个对话框,让用户选择是打开、保存、取消。如果这样子的话用户就可以保存此文件了,大家有什么好方法可以做到我上述的功能?如swing, javascript或其它方面的?
  PS:本人只会java WEB的编程。

解决方案 »

  1.   

    LZ你说的可以保存是下载文件把.? 如果你要求用户可以打开文件但是不可以保存的话,你就不应该做到文件下载那里去.! 你应该直接在servlet里面读文件,然后返回给用户的只是文件的内容,而不是流
      

  2.   

    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还是弹出一个对话框,来让用户选择保存,打开和取消的操作。
      

  3.   


    楼主完全不用搞一个下载的组件啦,就用java操作DOC文件就可以了啦,点击链接的时候去读取一个doc文件,然后把读取到的数据显示到界面,只不过这里要熟悉java怎么操作doc了,只是给点建议,技术方面可以百度下去实现,不难的
      

  4.   

    web应用,能看到就能打印,所以这种需求一般来说意义不大,因为最简单方法我截屏,然后打印,你怎么办?
      

  5.   

    如果你使用下载方式输出文件流是不能避免“打开”“保存”提示的。
    如果使用控件(AxtiveX)可以做到仅打开(具体方案请自行查找你提供文件的类型对应方案)。
      

  6.   


    //禁止右键
            document.body.oncontextmenu=function(oEvent){
               if(document.all){
                    oEvent=window.event;
                    oEvent.returnValue=false;
               }else{
                   oEvent.preventDefault();
               }
            }
      

  7.   

    但那些重要不但只是DOC文件,还有Excel和PDF的,那PDF怎么办呢?里面很多图片和格式的。 
      

  8.   

    我现在网页中内嵌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>
      

  9.   

    <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>
      

  10.   

    <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也放在同级目录下 弱弱都问一下怎么不显示呢?