`

struts1 多个文件上传和下载,jquery

阅读更多

 

 struts1 多个文件上传和下载,jquery

 

 

	<html:form styleId="myform1" action="/FwrzyshList.do" method="post"
		enctype="multipart/form-data">



<table id="table6" cellpadding="0" cellspacing="0" border="1"
			width="90%" align="center"
			onkeydown="if(event.keyCode==13)event.keyCode=9">
			<tr>
				<td colspan="3" class="tab">
					<table class="tabs" cellpadding="0" cellspacing="0">
						<tr>
							<td class=tab_sf></td>
							<td class=tab_f>
								附件
							</td>
							<td class=tab_ef></td>
							<td class=tab_ef align="right">
								<input type="button" class="button" onclick="addTable6()"
									value="增加">
							</td>
						</tr>
					</table>
				</td>
			</tr>

			<tr>
				<th width="40%">
					文件名称
				</th>
				<th width="30%">
					上传时间
				</th>
				<th>
					操作
				</th>
			</tr>


			<logic:notEmpty name="fwrzxysPersistentForm"
				property="dtywFwrzxysFjPOList">
				<logic:iterate id="data" name="fwrzxysPersistentForm"
					indexId="index" property="dtywFwrzxysFjPOList">
					<tr onMouseOver="this.style.backgroundColor='#FFCCCC'"
					onMouseOut="this.style.backgroundColor=''" >
						<td>
							<bean:write property="wjmc" name="data" />
							<!-- 文件名称 -->
						</td>
						<td>
							<bean:write property="mrut" name="data" />
							<!--     上传时间          -->
						</td>
						<td>
							<a
								onclick="deleteTable2(this,'<bean:write property="ysbh" name="data" />','<bean:write property="xh" name="data" />','t6')"
								style="cursor: hand">删除</a>
						</td>
					</tr>
				</logic:iterate>
			</logic:notEmpty>

			<tr id='tr6'>
				<td colspan='2' align='center'>
					<input type='file' name='file' size='25' />
				</td>
				<td>
					<a onclick="deleteTable0(this)" style="cursor: hand">删除</a>
				</td>
			</tr>

		</table>

</html:form>


 

 

 

 

var $tr6;
$(document).ready(function() {

$tr6 = $("#tr6").remove();
});

function addTable6() {
         $tr6.clone().appendTo("#table6");
}



function toSaveYsd() {
	if (!checkNull()) {
		return;
	}
	
	$("#table6 input[type='file']").each(function() {
		III++;
		this.name="file"+III;
	});
	var myform=$("#myform1").serialize();
	var params = decodeURIComponent(myform,true); 	
	
	document.forms[0].action = "/fwrzxysPersist.do?method=save&"+params;
	document.forms[0].submit();
}

 

 

var $tr6;
$(document).ready(function() {

       $tr6 = $("#tr6").remove();
});


function addTable6() {
	
	$tr6.clone().appendTo("#table6");
}


function toSave() {
		
	$("#table6 input[type='file']").each(function() {//一定要有这一步,否则只能上传一个文件
		III++;
		this.name="file"+III;
	});
	//var myform=$("#myform1").serialize();
	//var params = decodeURIComponent(myform,true); 	
	
	document.forms[0].action = "/aa.do?method=save&"+params;
	document.forms[0].submit();
}

 

 

 

 

 Action 后面代码:

 

Hashtable files = fwrzxysPersistentForm
					.getMultipartRequestHandler().getFileElements();
			
			for (Enumeration e = files.keys(); e.hasMoreElements();) {
				FormFile file = (FormFile) files.get((String) e.nextElement());
				if (file != null && file.getFileSize() > 0) {

					String fileName = file.getFileName();
					InputStream is = file.getInputStream();
					String patch = ((FwrdwbaPath) Config.getBean("fwrbafj"))
							.getFilePath();
					File f = new File(patch);
					if (!f.exists()) {
						f.mkdirs();
					}
					SimpleDateFormat sf = new SimpleDateFormat(
							"yyyy-MM-dd-HH-mm-ss");
					Date date = new Date();
					String name = requestContext.getCzydm() + sf.format(date)
							+ "" + fileName;
					File fil = new File(patch, name);
					FileOutputStream fos = new FileOutputStream(fil);
					byte[] b = new byte[1024];
					int real = 0;
					real = is.read(b);
					while (real > 0) {
						fos.write(b, 0, real);
						real = is.read(b);
					}
					fos.close();
					is.close();
					file.destroy();
					iv++;
					DtywFwrzxysFjPO dtywFwrzxysFjPO = new DtywFwrzxysFjPO();
					dtywFwrzxysFjPO.setYsbh(ysbh);
					dtywFwrzxysFjPO.setXh(iv + "");
					dtywFwrzxysFjPO.setScwjlj(name);
					dtywFwrzxysFjPO.setWjmc(fileName);
					dtywFwrzxysFjPO.setJgdm(requestContext.getJgdm());
					dtywFwrzxysFjPO.setXxly(xxly);
					new DtywFwrzxysFjDAO().add(dtywFwrzxysFjPO);
				}
			}

 

-----------以上为上传, 下面为下载文件-------------------------

 

javascript

 

function download(ysbh, xh, lx) {
	window.open("/aa.do?method=downLoad&ysbh=" + ysbh + "&xh=" + xh
			+ "&lx=" + lx);
}

  

 

 

Action

 

 

/**
	 * 下载附件的上传文件
	 * 
	 * @return
	 */
	public ActionForward downLoad(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws java.net.SocketException {
		String ysbh = request.getParameter("ysbh");
		String xh = request.getParameter("xh");
		String lx = request.getParameter("lx");
		BufferedInputStream bis = null;
		BufferedOutputStream bos = null;
		OutputStream fos = null;
		InputStream fis = null;
		String filepath = null;
		String fileName = "";
		try {
			if (lx.equalsIgnoreCase("fj")) {// 文件下载
				FjPO PO = new FjDAO().get(
						ysbh, xh);
				fileName = PO.getWjmc();
				filepath = ((BaPath) Config.getBean("bafj"))
						.getFilePath()
						+ File.separator + PO.getScwjlj().trim();

			}			File uploadFile = new File(filepath);
			fis = new FileInputStream(uploadFile);
			bis = new BufferedInputStream(fis);
			fos = response.getOutputStream();
			bos = new BufferedOutputStream(fos);
			// 弹出下载对话框时防止乱码
			response.setHeader("Content-disposition", "attachment;filename="
					+ URLEncoder.encode(fileName, "utf-8"));
			int bytesRead = 0;
			// 用输入流进行先读,然后用输出流去写,使用的是缓冲输入输出流
			byte[] buffer = new byte[8192];
			while ((bytesRead = bis.read(buffer, 0, 8192)) != -1) {
				bos.write(buffer, 0, bytesRead);
			}
			bos.flush();
			fis.close();
			bis.close();
			fos.close();
			bos.close();
		} catch (java.net.SocketException e1) {
			logger.error("文件下载失败" + e1);
			e1.printStackTrace();
		} catch (Exception e) {
			logger.error("文件下载失败" + e);
			e.printStackTrace();
		}
		return null;
	}

 

   

  

分享到:
评论

相关推荐

    struts1上传多个文件同时

    2. **后端配置**:在Struts1的配置文件(struts-config.xml)中,你需要为每个文件上传动作创建一个单独的ActionMapping,因为Struts1默认的FileUpload拦截器只能处理单个文件。每个ActionMapping对应一个ActionForm...

    struts2+jquery多文件上传显示进度条,可直接运行(非常强大)

    Struts2和jQuery结合实现的多文件上传功能是一种常见的Web开发技术,特别是在处理大量数据时,用户需要上传多个文件的情况。这个项目的核心是利用Struts2的Action支持和jQuery的AJAX功能,以及一个用于展示进度条的...

    struts2异步多文件上传和下载

    在"struts2异步多文件上传和下载"的例子中,我们将探讨如何利用Struts2的特性来实现实时的、多文件上传以及带有进度条的单文件上传。 首先,文件上传在Web开发中是一项常见的需求,Struts2通过ActionContext类和...

    JQuery_uploadify_struts2_jsp__ajax多文件上传

    总结来说,这个系统通过jQuery和uploadify插件实现了AJAX方式的多文件上传,用户可以选择多个文件,而页面不会刷新。文件上传的处理由Struts2的Action完成,上传成功后返回特定的结果,使得页面可以做出相应的反馈。...

    struts2_uploadify带进度条的多文件上传下载

    这个项目示例提供了一个完整的解决方案,使得用户在上传多个文件时可以看到实时的进度条,同时支持文件的下载。 Struts2是Apache软件基金会下的一个开源项目,它是一款基于MVC(Model-View-Controller)设计模式的...

    struts1实现的文件批量上传

    在本文中,我们将探讨如何使用Struts1框架实现文件的批量上传功能。Struts1是一个经典的Java Web应用程序框架,它提供了...通过这些步骤,我们可以构建一个完整的文件上传系统,让用户能够方便地上传多个文件到服务器。

    jquery+struts2实现文件上传

    jQuery是一个轻量级的JavaScript库,提供了丰富的交互效果和API,而Struts2是Java企业级开发中广泛使用的MVC框架,它提供了一套完善的文件上传机制。 首先,我们需要确保在项目中引入了Struts2的核心库。根据描述,...

    struts2多文件的上传

    在本项目中,"struts2多文件的上传"实现了用户一次性上传多个文件的能力。 要理解这个功能,首先我们需要了解Struts2中的Action类和Interceptor(拦截器)。Action类是处理用户请求的核心,而Interceptor则用于处理...

    struts 单文件上传和多文件上传带进度条

    在Struts中,可以实现单文件和多文件的上传,并且为了提升用户体验,我们还可以添加进度条来显示文件上传的状态。本文将详细介绍如何在Struts中实现这两个功能,并带上传进度条。 首先,我们需要了解Struts中处理...

    struts+jquery文件上传

    Struts2和jQuery是两种非常流行的Java Web开发技术。Struts2是一个强大的MVC(Model-...通过结合Struts2和jQuery,我们可以创建一个高效且用户友好的文件上传功能,既满足了后台处理的需求,又提升了前端的交互体验。

    struts+hibernate实现文件上传、下载,以二进制存于数据库

    在IT行业中,文件上传和下载是常见的功能,特别是在Web应用中。本项目通过结合Struts、Hibernate框架,以及使用EasyUI作为前端展示,实现了文件的二进制存储于数据库的功能。下面将详细介绍这一过程中的关键技术和...

    Struts AJAX文件上传

    1. **配置Struts Action**:首先,你需要创建一个Struts Action来处理文件上传请求。这个Action类需要实现`com.opensymphony.xwork2.ActionSupport`接口,并重写其中的execute方法,以便接收并处理上传的文件。 2. ...

    jquery 多文件上传 (java)

    标题 "jquery 多文件上传 (java)" 涉及到的是使用 jQuery 和 Java 实现一个支持多文件上传的功能。在 Web 开发中,文件上传是一个常见的需求,特别是当用户需要提交图片、文档或其他媒体文件时。jQuery 是一个流行的...

    struts2多文件上传显示进度

    这个库提供了处理单个或多个文件上传的功能,并允许开发者设置最大文件大小、内存阈值等参数。在Struts2配置文件(struts.xml)中,我们需要开启文件上传支持: ```xml &lt;constant name="struts.multipart.parser" ...

    struts2多文件上传

    Struts2多文件上传是Java Web开发中常见的一项功能,用于允许用户一次上传多个文件。在Struts2框架中,实现这一功能涉及到一系列的技术和步骤。以下是对这一知识点的详细说明: 1. **Struts2框架**:Struts2是一个...

    jquery_uploadify实现的下载进度条

    通过以上步骤,你就能在Struts2环境中利用jQuery Uploadify实现一个功能完善的文件上传组件,其中包括下载进度条的功能。这个过程不仅提升了用户体验,也展示了现代Web开发中动态交互设计的魅力。

    Struts2 JQuery 文件上传 进度条

    JQuery File Upload是一个基于JQuery的插件,它支持多文件上传和进度条显示。 1. 添加依赖: 在你的`pom.xml`(如果你的项目是Maven)或`build.gradle`(如果你使用Gradle)文件中,添加Struts2和JQuery File ...

    struts2(ssh)带进度条文件上传 demo 的jar包1

    这个"struts2(ssh)带进度条文件上传 demo 的jar包1"可能是为了演示如何实现这一功能,但由于描述中提到权限问题,jar包被分成了三次上传,这里是第一部分。 在实现带进度条的文件上传时,通常需要以下步骤: 1. ...

    AjaxFileUpload Struts2 多文件上传

    总的来说,通过结合AjaxFileUpload、jQuery和Struts2,我们可以实现一个高效、用户体验良好的多文件上传功能。在实际开发中,可能还需要考虑错误处理、进度条显示、预览功能等增强用户体验的细节。确保按照最佳实践...

    Struts2+uploadify上传文件

    1. **异步上传**:用户可以选择多个文件并同时上传,无需等待一个文件上传完成再选择下一个。 2. **进度条显示**:在上传过程中,可以显示每个文件的上传进度,提升用户体验。 3. **错误处理**:可以自定义错误提示...

Global site tag (gtag.js) - Google Analytics