ajax做下载验证与下载

下载 :

  jsp页面

<%String productId = request.getParameter("productId") == null ? "" : request.getParameter("productId");%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY topmargin="10px">

<form action="" name="downloadstrufile">
	<input type="hidden" name="packageId1" value="<%=productId%>">
</form>
</BODY>
<script language="javascript">
<%-- 下载文件 --%>
function forStruDown(){
    var url="<%=request.getContextPath()%>/compressFilesForm/new_downloadCompressedFile_validate.so";
    var param="packageId1=<%=productId%>";
	var myAjax=new Ajax.Request(url,{method:'post',parameters:param,onSuccess:doStruDown,asynchronous:true});
}
var doStruDown=function(text){
	var returnvalue = text.responseText;
	if(returnvalue == "1"){
		var url = "<%=request.getContextPath()%>/compressFilesForm/new_downloadCompressedFile.so";
		document.forms["downloadstrufile"].action = url;
		document.forms["downloadstrufile"].submit();
	}else if(returnvalue == "0"){
			alert("文件不存在!");
	}
}
</script>
</HTML>

 后台java

   验证文件是否存在
  public void new_downloadCompressedFile_validate(WebContext context) {
		HttpServletRequest request = (HttpServletRequest)context.get(WebcConstant.Param_Request);
		
		FileInputStream in = null;
		String flag = "1";
				try {
			String packageId = getParameter("packageId1", context);
			List daoList = searchFileType(packageId);
						
			String sql = " ";
			List<String>  files = hibernateDao.executeSqlQuery(sql);
			for (String file : files) {
			in = new FileInputStream(dataFilePath +"temp/zip/"+ file);				
			}
		} catch (Exception e) {
			flag ="0";
		} 
		HttpServletResponse rep = WebcUtils.getResponse(context);
		ForwardSpecification fs = new ForwardSpecification();
		fs.setType(ForwardView.ajaxType);
		ForwardView view = new SimpleForwardViewImpl();
		try {
			view.forward(flag, request, rep, fs);
		} catch (Exception e) {
		}
		finally {
			if (in != null) {
				try {
					in.close();
					in = null;
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}

 

下载方法 //流
  public void new_downloadCompressedFile(WebContext context) {
		if("yes".equals(getParameter("all", context))){
			downloadCompressedFileByObject(context);
			return;
		}
		FileInputStream in = null;
		try {
			HttpServletResponse response = WebcUtils.getResponse(context);
			String packageId = getParameter("packageId1", context);
			String sql = "" ;
			List<String>  files = hibernateDao.executeSqlQuery(sql);
			
			String file = SpoilageMgrUtils.notEmptyStr(files);//查询一列
			if(StringUtils.isNotBlank(file)){
				String exportedFileName =file;
			in = new FileInputStream(dataFilePath +"temp/zip/"+ file);				
				// 设置输出的格式
				response.reset();
				response.setContentType("text/html;charset=GBK");
				response.addHeader("Content-Disposition", "attachment; filename="
						+ java.net.URLEncoder.encode(exportedFileName, "UTF-8"));
				// 循环取出流中的数据
				byte[] b = new byte[1024];
				int len;
				while ((len = in.read(b)) > 0) {
					response.getOutputStream().write(b, 0, len);
				}
				response.getOutputStream().flush();
				response.getOutputStream().close();
			}
		} catch (Exception e) {
			SgLoger.writeErrorInfo(this.getClass(), "new_downloadCompressedFile", e);
		} finally {
			if (in != null) {
				try {
					in.close();
					in = null;
				} catch (Exception e) {
					SgLoger.writeErrorInfo(this.getClass(), "new_downloadCompressedFile", e);
				}
			}
		}
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于用户登录验证,可以使用Ajax实现异步验证。下面是一个简单的示例代码: HTML部分: ```html <form id="loginForm"> <input type="text" id="username" name="username" placeholder="用户名"> <input type="password" id="password" name="password" placeholder="密码"> <button type="submit">登录</button> </form> <p id="message"></p> ``` JavaScript部分: ```javascript // 监听表单提交事件 document.getElementById('loginForm').addEventListener('submit', function(event) { event.preventDefault(); // 阻止表单默认提交行为 // 获取表单数据 var username = document.getElementById('username').value; var password = document.getElementById('password').value; // 创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); // 设置请求参数,POST请求,将数据发送到login.php xhr.open('POST', 'login.php', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); // 设置回调函数 xhr.onreadystatechange = function() { if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { // 接收到响应后的处理 var response = JSON.parse(xhr.responseText); document.getElementById('message').textContent = response.message; } }; // 发送请求 xhr.send('username=' + encodeURIComponent(username) + '&password=' + encodeURIComponent(password)); }); ``` 在服务器端的`login.php`文件中,你可以进行用户名和密码的验证,然后返回响应给前端。在上述代码中,通过`xhr.onreadystatechange`回调函数来处理服务器返回的响应,并将验证结果显示在页面上。 请注意,这只是一个简单的示例,实际项目中还需要进行安全性和错误处理等更多的考虑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值