java实现带KEY验证上载

java实现带KEY验证下载

       给客户做的一个公司的小网站,客户提出需要下载的用户需要通过邮件向他们申请KEY,才可以下载。我在后台做了一个简单的KEY生成的工具,其实就是一个简单的hibernate生成UUID的程序,就拿这个UUID来作为KEY.在用户下载的时候需要输入一个KEY,通过验证之后才能下载,跟普通的图片验证没什么区别,可能只是一个在服务器端一个在客户端验证的区别,当然图片也可以在服务器端验证。下面上代码:

       页面代码:

     

<div class="proList">
			KEY:<input type="text" name="id" id="id" value="" size="32"/>
			<%ArticleBean articleBean= (ArticleBean)request.getAttribute("articleBean");%>
				<%if(articleBean.getAttachList().size()>0 ){%><DIV></DIV><%} %>
		         <%for(AttachmentBean attachmentBean:articleBean.getAttachList()){ %>
		          <DIV>&nbsp;&nbsp;&nbsp;&nbsp;<A  href="javascript:verifyKey('<%=CONTEXT_PATH %>/download.action?fileName=<%=attachmentBean.getFileNameURL() %>&filePath=<%=attachmentBean.getName()%>');"><%=attachmentBean.getFileName() %></A></DIV>
		          <%} %>
			</div>

 

  JS代码:

  

function verifyKey(url){
	var id = $("#id").val();
	var curl = "<%=CONTEXT_PATH %>/cmsAdmin/downloadkey/verifyKey.action";
	$.ajax({
		url:curl,
		data:"id="+id,
		dataType: "json",
		success: function(json){
			if(json.status==1){
					window.location.href=url;
				}else{
					alert("请输入正确的KEY,若没有请向unisec@mail.uni-sec.com申请!");
					}
		}
		});
}

 

服务器端代码,基于struct2的:

 

public String download() {
		try {
			File input = null;
			String classpath = DownloadAction.class.getResource("/").getPath();
			String savePath = classpath.replaceAll("/WEB-INF/classes/",
					"/upload/")
					+ this.filePath;
			input = new File(savePath);
			docStream = new FileInputStream(input);
			this.contentDisposition = Utils.chgStr(this.fileName);
			return "download";
		} catch (Exception e) {
			log.error("Cannot execute an SWorkAction filedown action: " + e, e);
			return ERROR;
		}

	}

 

action的xml配置文件:

 

<action name="download" class="cn.net.tech.web.action.DownloadAction" method="download">
			<result name="download" type="stream">
				<param name="contentType">
					application/octet-stream
				</param>
				<param name="inputName">docStream</param>
				<param name="bufferSize">1024</param>
				<param name="contentDisposition">
					attachment;filename="${contentDisposition}"
				</param>
			</result>
			<result name="error">/pages/Error.jsp</result>
		</action>