通过servlet跳转到ppt文件之类..

解决方案 »

  1.   

    to: jFresH_MaN(TM) 
    有例子吗?给点代码也行
    谢谢
      

  2.   

    其实道理不复杂的,我说个例子吧页面上有个链接
    <a href="abc/abc.avi">abc</a>
    我们以前都是这么写的
    现在不直接写出地址
    <a href="abc/one.jsp">abc</a>那么这时候我们点了链接就转发到这个jsp了
    我们可以实现在session里面setAttribute()来控制权限。
    如果getAttribute()有值说明是正常地使用这个avi,那么就可以返回地址
    如果有人直接使用链接来得到这个avi,那么在session里面就没有控制权限的attribute了,这时候我们就不会返回avi的地址。
    这样就能控制不让客户直接得到地址下载资源文件了。
      

  3.   

    to: jFresH_MaN(TM)
    one.jsp里面放一个Avi代码要怎么写的,
    麻烦你了
      

  4.   

    在one.jsp里写一个流输出就可以的
      

  5.   

    首先可以告诉你,这仅靠IE或者Mozilla等是完全不可能的,不管你怎么去隐藏,我只要使用Charles或CommView之类的软件捕捉网络连接就完全截获数据,因此,简单的依靠变换地址是无法完成的如果你需要完成类似的功能,可以使用流文件来实现,这样别人虽然知道了地址,却无法保存文件,不过令人遗憾的是,使用“影音传送带”之类的软件可以将流文件下载因此,唯一可行的办法就是自己写一个ActiveX控件,在控件中完成输出,并且要对源进行适当的加密,在你自己的控件中来完成解码的过程,这样,即使别人下载地址中的流,却也无法还原
      

  6.   

    对楼上的补充一下:
    也许我的话武断了一些,但是到目前为止,不使用ActiveX等程序进行前台控制的文件,基本上我都能找到最终的URL,不管他隐藏得多深,唯一一个没有能够下载的是使用ColdFusion(MacroMedia的服务器软件)做为服务器,前台使用Flash来进行电影播放的网站。
      

  7.   

    可以防止。
    如果你是要所有的用户在任何情况下都不能下载,那就比较简单。但网页上也不能调用这些文件了。
    如果是让用户不能直接下载,但是网页上面可以看,那就比较复杂了。比如你可以要求用户登录,然后可以检测session. 但是并不能完全实现,因为浏览器会把内容都缓存下来。
    如果你是用jsp,那么是有办法实现的,就是 Filter (过滤器)。
    当请求发送到服务器(如Tomcat)时,如果对应该文件扩展配置了过滤器,就会先经过该过滤器,在这个过滤器中可以进行一些判断,决定让请求继续或者转移向别的页面。
    过滤器一个较常用的用法是检测用户是否登录,未登录就转向到登录页面,而不用在每个页面都放置检验登录的代码。
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
                             throws IOException, ServletException {
            RequestDispatcher dispatcher = null;
            HttpSession session = ((HttpServletRequest)request).getSession();        String sPath = ((HttpServletRequest)request).getServletPath().toLowerCase();
            boolean bAvi = sPath.endsWith(".avi");
            boolean bSwf = sPath.endsWith(".swf");
            boolean bPpt = sPath.endsWith(".ppt");
            boolean bNeedCheck = (bAvi || bSwf || bPpt);        //检测是否已经登录
            if(bNeedCheck && session.getAttribute("UserId")==null){
                dispatcher = request.getRequestDispatcher("/login.jsp");
                dispatcher.forward(request, response);
            }else{
                chain.doFilter(request, response);
            }
        }
      

  8.   

    我用FlashGet直接下在服务器上的AVI文件的地址,确实不能下载到这个AVI文件