`
coffeej
  • 浏览: 2692 次
文章分类
社区版块
存档分类
最新评论

struts2附件上传下载管理

阅读更多

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文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...

    struts2文件上传和下载

    在Struts2中,文件上传和下载是常见的功能需求,对于用户交互和数据交换至关重要。以下是对这些知识点的详细阐述: 1. **文件上传**: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它是一个Apache提供...

    struts2文件上传与下载

    在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户在Web表单中提交的文件,如图片、文档等。下面将详细介绍Struts2中文件上传和下载的实现方法。 ### 1. 文件上传 #### 1.1 配置Struts2 首先,我们...

    struts2文件上传下载实例

    通过使用Maven管理依赖,编写Action类处理业务逻辑,并在Struts2配置文件中定义动作映射,我们可以构建一个用户友好的、安全的文件上传下载系统。这不仅对提高用户体验有重要作用,也是保障数据安全和应用程序稳定性...

    基于Struts2的文件上传下载功能的完整源代码。

    在基于Struts2的文件上传下载功能中,它提供了处理用户上传文件和提供文件下载的服务。这个完整的源代码是实现这些功能的一个实例,经过测试确保了其正确性和可用性。 首先,我们要理解Struts2中的Action类。Action...

    Struts2文件上传下载和表单重复提交问题

    综上所述,Struts2文件上传下载和表单重复提交涉及多个技术点,包括Struts2的配置、文件操作、HTTP响应头设置、安全性和异常处理。理解并熟练掌握这些知识点,对于构建健壮的Web应用程序至关重要。

    简单易懂的struts2文件上传

    在Struts2中,文件上传功能是一个常见的需求,例如用户可能需要上传图片、文档或其他类型的文件。本教程将深入浅出地讲解如何在Struts2中实现文件上传,并提供一个简单的实例来帮助理解。 1. **Struts2文件上传概述...

    struts框架-文件上传下载

    1. 使用Struts2的拦截器来处理文件上传,可以更好地控制和管理文件上传过程。 2. 为文件上传和下载操作编写单元测试,确保其稳定性和正确性。 3. 保持代码的可读性和可维护性,遵循良好的编程规范。 以上是对...

    struts2 文件的上传和下载

    总之,Struts2的文件上传和下载功能是基于Commons FileUpload库实现的,通过配置Struts2拦截器和编写Action逻辑,可以方便地处理用户的文件交互需求。理解和掌握这一过程对于Java Web开发者来说是非常重要的,它能...

    struts2+jquery+ajax文件异步上传

    在文件上传场景中,Struts2主要负责接收前端发送的文件数据,并将这些数据存储到服务器的指定位置。配置Struts2的Action类和相应的XML配置文件,可以定义文件上传的处理逻辑。 接着,jQuery是一个高效、简洁的...

    swfuplaod+struts2实现多文件上传

    结合Struts2,一个流行的Java Web框架,可以构建出高效、用户友好的文件上传功能。下面将详细介绍如何利用SWFUpload与Struts2来实现多文件上传。 **一、SWFUpload组件介绍** SWFUpload 是一个JavaScript库,它利用...

    struts2的上传,下载,删除文件

    在本篇中,我们将聚焦于Struts2中的文件上传、下载和删除功能,这些是Web应用中常见的需求。 1. 文件上传: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它处理了多部分表单数据。首先,你需要在`...

    视频上传管理后台系统Struts2

    Struts2拥有丰富的插件库,如Tiles插件用于布局管理,JSON插件处理JSON数据,以及文件上传插件,可以帮助轻松处理视频文件的上传。 8. **安全性** 在视频上传管理中,安全问题尤为重要。Struts2提供了一些内置的...

    struts2文件上传例子(支持大文件)

    在这个“struts2文件上传例子(支持大文件)”中,我们将探讨如何利用Struts2框架实现文件上传功能,尤其是处理大文件的能力。 在Web应用中,文件上传是一项常见的需求,例如用户可能需要上传照片、文档或视频等。...

    struts2 文件上传下载

    在Struts2中,文件上传和下载是常见的功能,它们允许用户从服务器上下载文件或向服务器上传文件。理解并掌握这一部分的知识对于开发交互性强的Web应用至关重要。 ### 一、文件上传 1. **使用Struts2的FileUpload...

    Struts2+上传文件源码

    这个"Struts2+上传文件源码"是一个演示如何在Struts2框架下实现文件上传的示例代码。 首先,我们来理解上传文件的基本流程。在Struts2中,文件上传是通过`Commons FileUpload`库来处理的,这是一个Apache提供的开源...

    struts2实例 自定义过滤器 文件上传下载 登录功能

    本实例展示了如何在Struts2环境中实现几个关键功能:自定义过滤器、文件上传下载以及用户登录功能。这些功能是任何Web应用程序的基础组成部分,理解和掌握它们对于提升Web开发技能至关重要。 首先,我们来探讨...

    Struts文件的上传和下载

    以上是Struts2中实现文件上传和下载的基本步骤,实际应用中还需要考虑文件大小限制、错误处理、安全性等问题。例如,通过拦截器限制上传文件大小,对文件名进行安全编码,防止路径遍历攻击等。此外,还可以使用第三...

    Struts2全注解方式实现文件上传与下载

    总结一下,本资源中涉及的Struts2全注解方式实现文件上传与下载的关键点包括: 1. 使用`@Action`和`@Result`注解进行Action配置。 2. `@Params`和`@Param`注解处理文件上传参数,定义文件属性并进行安全验证。 3. ...

Global site tag (gtag.js) - Google Analytics