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;
}
分享到:
相关推荐
2. **后端配置**:在Struts1的配置文件(struts-config.xml)中,你需要为每个文件上传动作创建一个单独的ActionMapping,因为Struts1默认的FileUpload拦截器只能处理单个文件。每个ActionMapping对应一个ActionForm...
Struts2和jQuery结合实现的多文件上传功能是一种常见的Web开发技术,特别是在处理大量数据时,用户需要上传多个文件的情况。这个项目的核心是利用Struts2的Action支持和jQuery的AJAX功能,以及一个用于展示进度条的...
在"struts2异步多文件上传和下载"的例子中,我们将探讨如何利用Struts2的特性来实现实时的、多文件上传以及带有进度条的单文件上传。 首先,文件上传在Web开发中是一项常见的需求,Struts2通过ActionContext类和...
总结来说,这个系统通过jQuery和uploadify插件实现了AJAX方式的多文件上传,用户可以选择多个文件,而页面不会刷新。文件上传的处理由Struts2的Action完成,上传成功后返回特定的结果,使得页面可以做出相应的反馈。...
这个项目示例提供了一个完整的解决方案,使得用户在上传多个文件时可以看到实时的进度条,同时支持文件的下载。 Struts2是Apache软件基金会下的一个开源项目,它是一款基于MVC(Model-View-Controller)设计模式的...
在本文中,我们将探讨如何使用Struts1框架实现文件的批量上传功能。Struts1是一个经典的Java Web应用程序框架,它提供了...通过这些步骤,我们可以构建一个完整的文件上传系统,让用户能够方便地上传多个文件到服务器。
jQuery是一个轻量级的JavaScript库,提供了丰富的交互效果和API,而Struts2是Java企业级开发中广泛使用的MVC框架,它提供了一套完善的文件上传机制。 首先,我们需要确保在项目中引入了Struts2的核心库。根据描述,...
在本项目中,"struts2多文件的上传"实现了用户一次性上传多个文件的能力。 要理解这个功能,首先我们需要了解Struts2中的Action类和Interceptor(拦截器)。Action类是处理用户请求的核心,而Interceptor则用于处理...
在Struts中,可以实现单文件和多文件的上传,并且为了提升用户体验,我们还可以添加进度条来显示文件上传的状态。本文将详细介绍如何在Struts中实现这两个功能,并带上传进度条。 首先,我们需要了解Struts中处理...
Struts2和jQuery是两种非常流行的Java Web开发技术。Struts2是一个强大的MVC(Model-...通过结合Struts2和jQuery,我们可以创建一个高效且用户友好的文件上传功能,既满足了后台处理的需求,又提升了前端的交互体验。
在IT行业中,文件上传和下载是常见的功能,特别是在Web应用中。本项目通过结合Struts、Hibernate框架,以及使用EasyUI作为前端展示,实现了文件的二进制存储于数据库的功能。下面将详细介绍这一过程中的关键技术和...
1. **配置Struts Action**:首先,你需要创建一个Struts Action来处理文件上传请求。这个Action类需要实现`com.opensymphony.xwork2.ActionSupport`接口,并重写其中的execute方法,以便接收并处理上传的文件。 2. ...
标题 "jquery 多文件上传 (java)" 涉及到的是使用 jQuery 和 Java 实现一个支持多文件上传的功能。在 Web 开发中,文件上传是一个常见的需求,特别是当用户需要提交图片、文档或其他媒体文件时。jQuery 是一个流行的...
这个库提供了处理单个或多个文件上传的功能,并允许开发者设置最大文件大小、内存阈值等参数。在Struts2配置文件(struts.xml)中,我们需要开启文件上传支持: ```xml <constant name="struts.multipart.parser" ...
Struts2多文件上传是Java Web开发中常见的一项功能,用于允许用户一次上传多个文件。在Struts2框架中,实现这一功能涉及到一系列的技术和步骤。以下是对这一知识点的详细说明: 1. **Struts2框架**:Struts2是一个...
通过以上步骤,你就能在Struts2环境中利用jQuery Uploadify实现一个功能完善的文件上传组件,其中包括下载进度条的功能。这个过程不仅提升了用户体验,也展示了现代Web开发中动态交互设计的魅力。
JQuery File Upload是一个基于JQuery的插件,它支持多文件上传和进度条显示。 1. 添加依赖: 在你的`pom.xml`(如果你的项目是Maven)或`build.gradle`(如果你使用Gradle)文件中,添加Struts2和JQuery File ...
这个"struts2(ssh)带进度条文件上传 demo 的jar包1"可能是为了演示如何实现这一功能,但由于描述中提到权限问题,jar包被分成了三次上传,这里是第一部分。 在实现带进度条的文件上传时,通常需要以下步骤: 1. ...
总的来说,通过结合AjaxFileUpload、jQuery和Struts2,我们可以实现一个高效、用户体验良好的多文件上传功能。在实际开发中,可能还需要考虑错误处理、进度条显示、预览功能等增强用户体验的细节。确保按照最佳实践...
1. **异步上传**:用户可以选择多个文件并同时上传,无需等待一个文件上传完成再选择下一个。 2. **进度条显示**:在上传过程中,可以显示每个文件的上传进度,提升用户体验。 3. **错误处理**:可以自定义错误提示...