`
daizhaoyun
  • 浏览: 28019 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

struts多文件上传

    博客分类:
  • SSI
阅读更多

1. 页面使用freemerk技术设计

 test.ftl

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>文件上传操作</title>

<script>

  function addFiles(){
     var filesDiv = document.getElementById("files");
     var fileInput = document.createElement("input");

	 fileInput.type="file";
	 fileInput.name="files";
		
	 var delButton = document.createElement("input");
	 delButton.type="button";
	 delButton.value="删除";
		
	 delButton.onclick=function del(){
	      this.parentNode.parentNode.removeChild(this.parentNode);
		}
	 var div = document.createElement("div");
	 div.appendChild(fileInput);
	 div.appendChild(delButton);
	 filesDiv.appendChild(div);
  }
  
  function upLoad(){
     document.form.action = "upLoad.action";
     document.form.submit();
  }
  
  function down(){
     document.form.action = "downloadList.action";
     document.form.submit();
  }
</script>
</head>
<body>
   <form id="form" name="form" enctype="multipart/form-data"  method="post">
   <table>
   <tr><td><input type="button" value="添加文件" onclick="addFiles();"/></td></tr>
   <tr><td><input type="file" name="files"/></td><td></td></tr>
   <tr><td><div id="files"></div></td><td></td></tr>
   <tr><td><input type="button" onclick="upLoad();" value="文件上传"/></td></tr>
   </table>
   
   </form>
</body>
</html>

 2.web.xml核心配置 注意使用最新的filter

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <!-- <display-name>excel</display-name>
  <welcome-file-list>
    <welcome-file>user.jsp</welcome-file>
  </welcome-file-list> -->
 <!--   <context-param>
      <param-name>contextConfigLocation</param-name>
 	  <param-value>/WEB-INF/applicationContext.xml</param-value>
  </context-param> -->
<!--   <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>  -->
  <filter>
     <filter-name>struts</filter-name>
     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  
  <filter-mapping>
     <filter-name>struts</filter-name>
     <url-pattern>*.action</url-pattern>
  </filter-mapping>
  
</web-app>

 3.action

package com.daizhaoyun.action;

import java.io.File;
/*import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;*/
import java.io.IOException;
/*import java.io.InputStream;
import java.io.OutputStream;*/
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")
public class FileUpAction extends ActionSupport {

	private List<File> files;
	private List<String> filesFileName;
	private List<String> filesContentType;

	public List<File> getFiles() {
		return files;
	}

	public void setFiles(List<File> files) {
		this.files = files;
	}

	public List<String> getFilesFileName() {
		return filesFileName;
	}

	public void setFilesFileName(List<String> filesFileName) {
		this.filesFileName = filesFileName;
	}

	public List<String> getFilesContentType() {
		return filesContentType;
	}

	public void setFilesContentType(List<String> filesContentType) {
		this.filesContentType = filesContentType;
	}

	public String inter() {
		return SUCCESS;
	}

	/**
	 * 批量上传文件
	 */
	public String upLoad() {
		/*if (files != null) {
			int i = 0;
			for (; i < files.size(); i++) {
				try {
					InputStream is = new FileInputStream(files.get(i));
					String path = ServletActionContext.getServletContext().getRealPath("/upload/");
					//下一级目录
					OutputStream os = new FileOutputStream(path+File.separator+filesFileName.get(i));
					byte buffer[] = new byte[8192];
					int count = 0;
					while ((count = is.read(buffer)) > 0) {
						os.write(buffer, 0, count);
					}
					os.close();
					is.close();
				} catch (FileNotFoundException e) {
					e.printStackTrace();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}*/
		
		String path = ServletActionContext.getServletContext().getRealPath("/upload/");
		if(files!=null){
			File savedir = new File(path);
			if(!savedir.exists()){
				savedir.mkdirs();
			}
			for(int i=0;i<files.size();i++){
				File saveFile = new File(savedir,filesFileName.get(i));
				try {
					FileUtils.copyFile(files.get(i), saveFile);
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return SUCCESS;
	}
}
 

4.struts核心配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
 
    <!-- <constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory"/> -->
    <constant name="struts.multipart.saveDir" value="/tmp"></constant>
    <constant name="struts.i18n.encoding" value="utf-8"></constant>
    <constant name="struts.multipart.maxSize" value="209715200" />
    
    <package name="file" extends="struts-default" namespace="/">
        <action name="inter" class="com.daizhaoyun.action.FileUpAction" method="inter">
            <result name="success" type="freemarker">
                /WEB-INF/test.ftl
            </result>
        </action>
        
        <action name="upLoad" class="com.daizhaoyun.action.FileUpAction" method="upLoad">
            <result name="success" type="freemarker">
                /WEB-INF/test.ftl
            </result>
        </action>
    </package>
</struts>

 5.访问路径 以inter.action进行访问

分享到:
评论

相关推荐

    Struts多文件上传

    在Struts 2中,多文件上传是一项非常实用的功能,尤其是在需要用户同时上传多个文件的应用场景下。Struts 2提供了强大的文件上传支持,并且可以很容易地处理多个文件的上传。下面将详细介绍Struts 2多文件上传的关键...

    struts多文件上传下载

    本项目"struts多文件上传下载"显然专注于实现这一功能,允许用户一次性上传一个或多个文件,并且限制了上传文件的大小,以防止恶意的大文件上传。 首先,我们来看文件上传。在Struts中,文件上传通常借助于Apache的...

    struts2文件上传下载源代码

    在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...

    Struts2多个文件上传

    在Struts2中,文件上传功能是一个常用特性,尤其在处理用户提交的多个文件时。本文将详细讲解如何使用Struts2进行多个文件的上传,重点是使用List集合进行上传。 首先,要实现Struts2的文件上传,必须引入必要的...

    struts2文件上传jar

    这个压缩包包含了实现Struts2文件上传所需的全部jar包,这些库文件对于理解和实现文件上传功能至关重要。 首先,我们要了解Struts2文件上传的基本流程。当用户通过表单提交包含文件输入字段的请求时,Struts2框架会...

    struts2实现文件上传下载

    对于大量文件上传,可以考虑使用多线程处理,提高上传效率。还可以添加进度条显示、断点续传等功能,提升用户体验。 以上就是使用Struts2框架实现文件上传下载的基本步骤和关键知识点。在实际开发中,可以根据项目...

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

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

    一个Struts1多文件上传实例(附Form中传List示例)

    本实例主要探讨如何在Struts1中实现多文件上传功能,并结合Form中传递List类型的数据,这对于理解MVC模式下的文件处理和数据传递有重要作用。我们将深入讨论以下几个关键知识点: 1. **Struts1框架基础**: Struts...

    JavaEE Struts文件上传

    JavaEE Struts 文件上传是Web开发中的一个常见需求,它允许用户从客户端向服务器传输文件。Struts作为JavaEE框架的一部分,提供了强大的功能来处理这种交互。以下是对这个主题的详细解析。 首先,理解文件上传的...

    struts2文件上传实例

    1. **.struts2配置**:在Struts2框架中,需要在`struts.xml`配置文件中添加相应的action配置,声明文件上传的处理方法。通常,你需要设置`&lt;result&gt;`类型为`stream`,以便处理上传的文件。 2. **Action类**:创建一...

    struts 文件上传 Struts实现文件上传

    Struts 是一个基于MVC(Model-View-Controller)...总结,Struts 实现文件上传涉及到配置、表单设计、Action处理和安全控制等多个环节。理解并熟练掌握这些知识点,能帮助开发者在实际项目中高效地处理文件上传需求。

    Struts2.0文件上传原理

    Struts2.0文件上传原理主要涉及Web应用中处理用户上传文件的功能,这一过程涉及到多个步骤和技术,包括HTTP协议、Multipart/form-data编码、临时文件存储以及后台处理。以下是对Struts2.0文件上传原理的详细解释: ...

    struts2文件上传

    Struts2 文件上传是Web开发中的一个重要功能,它允许用户从他们的本地计算机向服务器传输文件。在Struts2框架中,文件上传是通过特定的拦截器实现的,这些拦截器处理了文件上传请求并提供了安全性和大小限制。下面将...

    struts2 文件上传

    Struts2 文件上传是Web开发中的一个...然而,实际开发中可能需要根据项目需求进行更多的定制,例如增加多文件上传、文件预览、上传进度显示等功能。这需要对Struts2框架有更深入的理解,并灵活运用相关技术来满足需求。

    Struts AJAX文件上传

    同时,为了优化性能,可以考虑使用多线程处理大文件上传,或者采用分块上传策略。 以上就是关于“Struts jQuery AJAX 文件上传”的核心知识点。通过这种方式,开发者可以创建更加流畅、高效的Web应用,提供给用户更...

    简单易懂的struts2文件上传

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

    struts2文件上传和下载

    1. **文件上传**: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它是一个Apache提供的组件,专门处理HTTP请求中的多部分数据,包括文件。首先,需要在Struts2配置文件中添加相关的拦截器,如`params`和`...

Global site tag (gtag.js) - Google Analytics