WEB项目中如何实现禁止下载文件(一)

原创 2012年03月22日 18:40:54
前言:该WEB项目为Struts2(struts也可以)
实际背景:在视频点播网站或者其他资源观看及下载网站,要实现限制非法下载。
视频播放:
<object type="application/x-shockwave-flash" data="http://localhost:8080/video/flv/vcastr3.swf" width="555" height="430" id="vcastr3">
    <param name="movie" value="http://localhost:8080/video/flv/vcastr3.swf" />
    <param name="allowFullScreen" value="true" />
    <param name="FlashVars" value="xml=<vcastr>
        <plugIns>
            <javaScriptPlugIn>
                <url>http://localhost:8080/video/flv/javaScriptPlugIn.swf</url>
            </javaScriptPlugIn>
        </plugIns>
        <channel>
            <item>
                <source>1.flv</source>
            </item>
        </channel>
    </vcastr>" />
</object>

只要你知道对方的网址及看到这段页面源码,可以使用任意下载工具(如迅雷),建立任务就能下载

步骤一:在该项目的的WEB.xml下添加

<filter-mapping>
          <filter-name>struts</filter-name>
          <url-pattern>*.flv</url-pattern> 
</filter-mapping>

这样在播放页面是无法播放了 因为struts将flv作为请求拦截住了,但是找不到这个Action(但是迅雷还能下载,囧)

步骤二:

jsp:
......
             <item>
                <source>download.flv?id=1</source>
            </item>
......

struts.xml中:

<action name="download" class="com.download.action.DownloadAction">
            <result name="success" type="stream">
                <param name="contentType">flv-application/octet-stream</param>
                <param name="contentDisposition">file="1.flv"</param>
                <param name="inputName">DownloadFile</param>
            </result>
            <interceptor-ref name="defaultStack" />
 </action>

DownloadAction

......

public class DownloadAction extends _ExtendsAction {
    private Integer id;
   
    public Integer getid() {
        return videoId;
    }
    public void setid(Integer Id) {
        this.videoId = videoId;
    }

    public InputStream getDownloadFile()
   {
        HttpServletRequest request     = ServletActionContext.getRequest();
           
        User user = (User)request.getSession().getAttribute("User");
          
        if(user == null)
        return ServletActionContext.getServletContext().getResourceAsStream("/video
         /flv/"+"请不要非法下载.flv");
       
        else
        return ServletActionContext.getServletContext().getResourceAsStream("/video
         /flv/"+id+".flv");
    }
   
    public String execute() throws Exception
   {
            return "success";   
   }
......

到这里位置我们就实现了禁止文件下载的功能(迅雷下载只能下载到“请不要非法下载.flv”因为没有session)
实现原理:将文件(flv,rar)等资源文件的后缀名成为struts2的Action后缀,然后使用struts2的文件下载功能,这样我们就可以经过一系列的控制阻止非法的下载。

缺点:只能针对指定的资源文件进行拦截,如有不同资源软件,均要进行方法设置

WEB项目中如何实现禁止下载文件(二)

http://blog.csdn.net/linshaoxu123/article/details/7384350


如何获取本地缓存的视频

复制下面代码至txt文件并重命名为bat文件,可以读取IE缓存所有东西

echo off
cls
echo 请选择要提取的文件类型
echo    1(swf) 2(flv) 3(jpg) 4(gif) 5(mp3) 6(mid) 7(其它类型)
set /p type=
if %type%==1 (set    filetype=swf)
if %type%==2 (set    filetype=flv)
if %type%==3 (set    filetype=jpg)
if %type%==4 (set    filetype=gif)
if %type%==5 (set    filetype=mp3)
if %type%==6 (set    filetype=mid)
if %type%==7 (echo 请输入文件类型,例如bmp
set /p    filetype=)

for /f "tokens=1,2*" %%i in ('reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"^|find /i "Cache"') do set "IEtmp=%%k"
::echo %userprofile%%IEtmp:~13% 从注册表里提取的缓存目录

:select_del_or_not
echo 提取后是否删除原文件?(y/n)
set /p delornot=
if %delornot%==y (goto startcopy)
if %delornot%==n (goto startcopy)
goto select_del_or_not
:startcopy
echo 正在提取文件,请稍候……
md %filetype%
for /f "delims=" %%i in ('dir "%userprofile%%IEtmp:~13%\*.%filetype%" /s/b') do copy /y "%%i" "%CD%\%filetype%\"
if %delornot%==y (for /f "delims=" %%i in ('dir "%userprofile%%IEtmp:~13%\*.%filetype%" /s/b') do del /f/q "%%i")
pause
goto startcopy

但是使用先前的拦截方法,提取文件都被重名名掉了,只有download.flv这个文件,除非你看一次再提取一次

相关文章推荐

leadu_Java Web项目中文件上传、下载功能

上传、下载

web项目的文件上传和 下载

文件上传和下载在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用Java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件...

SpringMVC创建web项目基础之(三)——Spring MVC实现文件上传

有时候,最美的惊喜并不是得到,而是学会付出。——《 安娜和她的云 》 最近放慢了写作的速度,是因为我慢慢觉得有些东西还是沉淀一段时间后才会更有价值。 我们先来看看使用Spring MVC实现文件上...

JAVA Web项目中用OpenOffice+Swftools+Flexpaper实现在线预览,txt文件出现乱码!

在幼儿园管理系统中,实现在线预览功能。当上传word、ppt、excel、pdf的时候,不会出现乱码;当上传txt文件的时候(编码除UTF-8之外),会出现乱码。当时有两个方案。 方案一: 在上传...

java web项目 web.xml配置文件下载

  • 2016年04月29日 15:14
  • 653B
  • 下载

Web项目所需ecside全部文件

  • 2013年08月18日 22:34
  • 26.33MB
  • 下载

eclipse项目web.xml文件配置servlet映射

对于很多初学者在使用eclipse编写servlet小程序的时候,往往需要配置web.xml文件中的servlet项目。关于这个地方的配置说明网上的解释多如牛毛,但是对于初学者可能太过于高深,不能够很...
  • linrufu
  • linrufu
  • 2017年05月22日 11:53
  • 1879

WEB项目自动化编译文件

  • 2016年10月18日 18:15
  • 1.72MB
  • 下载

文件上传到服务端web小项目

  • 2015年12月08日 11:32
  • 1.44MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WEB项目中如何实现禁止下载文件(一)
举报原因:
原因补充:

(最多只允许输入30个字)