jsp代码:
<form action="upload.action" method="post" enctype="multipart/form-data">
<table>
<tbody>
选择第一个文件:<input type="file" name="upload" /><br>
选择第二个文件:<input type="file" name="upload" /><br>
选择第三个文件:<input type="file" name="upload" /><br>
<input value="上传" type="submit" />
</tbody>
</table>
</form>
<table cellspacing="1" id="roleTable" class="tablesorter" style="width:98%" >
<thead>
<tr>
<th width="30"><input type="checkbox" onClick="checkallRows(this)" id="checkall"></input></th>
<th width="20"></th>
<th>文件名称</th>
<th>上传人员</th>
<th>文件大小</th>
<th>上传时间</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
<s:iterator value="attachmentList" id="attachment" status="tpls">
<tr >
<td><input type="checkbox" name="cName" value="${staffId}"/></td>
<td><a href="#" class="expand-data-more"></a></td><!--排序按钮 需要展开必加 -->
<td>${attachment.fileName}</td>
<td>${attachment.creater}</td>
<td>${(attachment.fileSize - attachment.fileSize%1024)/1024} KB</td>
<td>${attachment.createTime}</td>
<td><a href="download.action?downloadFileName=${attachment.fileName}&downloadFilePath=${attachment.filePath}">
<span><span class="add"></span>下载</span></a></td>
<td><a href="deleteUpload.action?id=${id}&downloadFilePath=${attachment.filePath}">
<span><span class="add"></span>删除</span></a></td>
<!------------END TD----------------------------->
</tr>
</s:iterator>
</tbody>
</table>
java代码:
public List<Attachment> attachmentList;
/**
* 上传
* @return
* @throws Exception
*/
public String upload() throws Exception
{
//getUpload()是临时文件
List<File> files = getUpload();
String fileName = "";
for (int i = 0 ; i < files.size() ; i++)
{
//fileName= "c3p0-0.9.1.2.bin.zip"
fileName = getUploadFileName().get(i);
Attachment a = new Attachment();
a.setFileName(fileName);
String filetype = fileName.substring(fileName.lastIndexOf("."));
//fileurl= "20101228181435906.zip"
String fileurl = DateCl.getDateToFilename() + filetype;
a.setCreateTime(DateCl.getFullDayTime());
//D:\Tomcat 6.0\webapps\bip-platform\\upload\yyyy-MM-dd
File path = new File(getSavePath() + "\\" + DateCl.getDay());
boolean bFile = path.exists();
if( bFile == false ){
bFile = path.mkdir();
}
a.setFilePath(path.getPath() + "\\" + fileurl);
FileOutputStream fos = new FileOutputStream(path.getPath() + "\\" + fileurl);
FileInputStream fis = new FileInputStream(files.get(i));
byte[] buffer = new byte[1024];
int len = 0;
long totalLen = 0;
while ((len = fis.read(buffer)) > 0)
{
totalLen += len;
fos.write(buffer , 0 , len);
}
a.setFileSize(totalLen);
jbpmAttachmentService.saveAttachmentPO(a);
}
return SUCCESS;
}
/**
* 下载
* @return
* @throws Exception
*/
public String download()throws Exception{
HttpServletRequest request = ServletActionContext.getRequest();
downloadFilePath = (String)request.getParameter("downloadFilePath");
downloadFileName = (String)request.getParameter("downloadFileName");
downloadFilePath = fileUploadUtil.convertDownloadFilePath(getSavePath(), downloadFilePath);
convertDownloadFilePath();
return SUCCESS;
}
/**
* 组织下载文件路径
* @throws Exception
*
*/
private void convertDownloadFilePath() throws Exception{
//得到这个路径upload\20101221190611093.zip D:\Tomcat 6.0\webapps\bip-platform\\upload
String importPath = getSavePath();
importPath = importPath.substring(importPath.lastIndexOf("\\")+1, importPath.length());
downloadFilePath = downloadFilePath.substring(downloadFilePath.lastIndexOf(importPath), downloadFilePath.length());
}
public InputStream getTargetFile() throws Exception {
InputStream is = ServletActionContext.getServletContext().getResourceAsStream(downloadFilePath);
return is;
}
/**
* 展示
* @return
*/
public String showUpload(){
attachmentList = jbpmAttachmentService.getAllAttachment();
return SUCCESS;
}
/**
* 删除
* @param upload
*/
public String deleteUpload(){
// File deleteFile = new File(downloadFilePath);
// if(deleteFile != null){
// deleteFile.delete();
// }
HttpServletRequest request = ServletActionContext.getRequest();
String id = (String)request.getParameter("id");
jbpmAttachmentService.deleteAttachmentPO(Long.parseLong(id));
return SUCCESS;
}
struts_upload.xml文件代码:
<constant name="struts.multipart.maxSize" value="104857601"></constant>
<constant name="struts.custom.i18n.resources" value="messageResource"/>
<!-- 附件管理-->
<package name="upload" namespace="/uploadMgr"
extends="struts-default">
<!-- 显示上传页面 -->
<action name="showUpload" class="uploadAction"
method="showUpload">
<result name="success">
showUpload.jsp
</result>
</action>
<!-- 上传附件 -->
<action name="upload" class="uploadAction"
method="upload">
<interceptor-ref name="fileUpload">
<!-- 定义允许的上传文件的类型-->
<param name="allowedTypes">application/vnd.ms-excel</param>
<param name="allowedTypes">application/x-zip-compressed,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/zip,application/octet-stream</param>
<!--上传文件的最大值,超過100M,這裡就失去了作用 -->
<param name="maximumSize">104857600</param>
</interceptor-ref>
<!-- 默認拦截器 -->
<interceptor-ref name="defaultStack"/>
<result name="success" type="chain">
showUpload
</result>
<result name="input" >
showUpload.jsp
</result>
</action>
<!-- 下载 -->
<action name="download" class="uploadAction"
method="download">
<result name="success" type="stream">
<param name="contentType">application/zip</param>
<param name="inputName">targetFile</param>
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
<param name="bufferSize">4096</param>
</result>
</action>
<!-- 删除附件 -->
<action name="deleteUpload" class="uploadAction"
method="deleteUpload">
<result name="success" type="chain">
showUpload
</result>
</action>
分享到:
相关推荐
在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...
在Struts2中,文件上传和下载是常见的功能需求,对于用户交互和数据交换至关重要。以下是对这些知识点的详细阐述: 1. **文件上传**: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它是一个Apache提供...
在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户在Web表单中提交的文件,如图片、文档等。下面将详细介绍Struts2中文件上传和下载的实现方法。 ### 1. 文件上传 #### 1.1 配置Struts2 首先,我们...
通过使用Maven管理依赖,编写Action类处理业务逻辑,并在Struts2配置文件中定义动作映射,我们可以构建一个用户友好的、安全的文件上传下载系统。这不仅对提高用户体验有重要作用,也是保障数据安全和应用程序稳定性...
在基于Struts2的文件上传下载功能中,它提供了处理用户上传文件和提供文件下载的服务。这个完整的源代码是实现这些功能的一个实例,经过测试确保了其正确性和可用性。 首先,我们要理解Struts2中的Action类。Action...
综上所述,Struts2文件上传下载和表单重复提交涉及多个技术点,包括Struts2的配置、文件操作、HTTP响应头设置、安全性和异常处理。理解并熟练掌握这些知识点,对于构建健壮的Web应用程序至关重要。
在Struts2中,文件上传功能是一个常见的需求,例如用户可能需要上传图片、文档或其他类型的文件。本教程将深入浅出地讲解如何在Struts2中实现文件上传,并提供一个简单的实例来帮助理解。 1. **Struts2文件上传概述...
1. 使用Struts2的拦截器来处理文件上传,可以更好地控制和管理文件上传过程。 2. 为文件上传和下载操作编写单元测试,确保其稳定性和正确性。 3. 保持代码的可读性和可维护性,遵循良好的编程规范。 以上是对...
总之,Struts2的文件上传和下载功能是基于Commons FileUpload库实现的,通过配置Struts2拦截器和编写Action逻辑,可以方便地处理用户的文件交互需求。理解和掌握这一过程对于Java Web开发者来说是非常重要的,它能...
在文件上传场景中,Struts2主要负责接收前端发送的文件数据,并将这些数据存储到服务器的指定位置。配置Struts2的Action类和相应的XML配置文件,可以定义文件上传的处理逻辑。 接着,jQuery是一个高效、简洁的...
结合Struts2,一个流行的Java Web框架,可以构建出高效、用户友好的文件上传功能。下面将详细介绍如何利用SWFUpload与Struts2来实现多文件上传。 **一、SWFUpload组件介绍** SWFUpload 是一个JavaScript库,它利用...
在本篇中,我们将聚焦于Struts2中的文件上传、下载和删除功能,这些是Web应用中常见的需求。 1. 文件上传: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它处理了多部分表单数据。首先,你需要在`...
Struts2拥有丰富的插件库,如Tiles插件用于布局管理,JSON插件处理JSON数据,以及文件上传插件,可以帮助轻松处理视频文件的上传。 8. **安全性** 在视频上传管理中,安全问题尤为重要。Struts2提供了一些内置的...
在这个“struts2文件上传例子(支持大文件)”中,我们将探讨如何利用Struts2框架实现文件上传功能,尤其是处理大文件的能力。 在Web应用中,文件上传是一项常见的需求,例如用户可能需要上传照片、文档或视频等。...
在Struts2中,文件上传和下载是常见的功能,它们允许用户从服务器上下载文件或向服务器上传文件。理解并掌握这一部分的知识对于开发交互性强的Web应用至关重要。 ### 一、文件上传 1. **使用Struts2的FileUpload...
这个"Struts2+上传文件源码"是一个演示如何在Struts2框架下实现文件上传的示例代码。 首先,我们来理解上传文件的基本流程。在Struts2中,文件上传是通过`Commons FileUpload`库来处理的,这是一个Apache提供的开源...
本实例展示了如何在Struts2环境中实现几个关键功能:自定义过滤器、文件上传下载以及用户登录功能。这些功能是任何Web应用程序的基础组成部分,理解和掌握它们对于提升Web开发技能至关重要。 首先,我们来探讨...
以上是Struts2中实现文件上传和下载的基本步骤,实际应用中还需要考虑文件大小限制、错误处理、安全性等问题。例如,通过拦截器限制上传文件大小,对文件名进行安全编码,防止路径遍历攻击等。此外,还可以使用第三...
总结一下,本资源中涉及的Struts2全注解方式实现文件上传与下载的关键点包括: 1. 使用`@Action`和`@Result`注解进行Action配置。 2. `@Params`和`@Param`注解处理文件上传参数,定义文件属性并进行安全验证。 3. ...