`
liumayulingyan
  • 浏览: 154162 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

Struts1和Struts2的文件上传

 
阅读更多

本文出处:http://wenku.baidu.com/link?url=ZHzE14zWxppPNd4GLv6fOXlRkXIPT2w5Jg-Uhij9hFIRU99_zGtydnjVEzelrM6Gy3wAG6ydRhDYm0Df9fwSAi74KpJnaLGOgE8WpqHArsK

                     

Struts1和Struts2的文件上传
1 Struts1文件上传
1.1 表单设计
   

<form action="upload" method="post" enctype="multipart/form-data">
       请选择要上传的文件:
       <input type="file" name="upload">
       <input type="submit" value="上传文件">
    </form>

 

1.2 在struts-config.xml进行如下配置

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

<struts-config>
  <form-beans >
      <form-bean name="uploadForm" type="com.upload.form.UploadForm"/>
  </form-beans>
  <global-exceptions />
  <global-forwards />
  <action-mappings >
     <action path="/upload"
        name="uploadForm"
        type="com.upload.action.UploadAction"
      >
      <forward name="error" path="/error.jsp"/>
     </action>
  </action-mappings>
  <!--
    可以在此处设置上传文件的大小  
  <controller maxFileSize="10M"/>   
   -->
</struts-config>

 
1.3 创建UploadForm类收集表单数据

package com.upload.form;

import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;

public class UploadForm extends ActionForm {
	
	private FormFile uploadFile;

	public FormFile getUploadFile() {
		return uploadFile;
	}

	public void setUploadFile(FormFile uploadFile) {
		this.uploadFile = uploadFile;
	} 
}

 

1.4 创建UploadAction类实现文件上传

package com.upload.action;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

import com.upload.form.UploadForm;

public class UploadAction extends Action {

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		// 获取UploadForm实例
		UploadForm uploadForm = (UploadForm) form;
		// 获取表单中上传的文件
		FormFile uploadFile = uploadForm.getUploadFile();

		// 若上传的文件不为空,且文件大小<80KB
		if (uploadFile != null && uploadFile.getFileSize() < 80 * 1024) {
			// 获取文件名
			String fileName = uploadFile.getFileName();
			// 编译一个文件后缀为jpg、png、gif的正则表达式
			// \w+代表最少有一个任何一个字母或者数字或者下划线,最多不限制
			Pattern pattern = Pattern
					.compile("^(?:\\w+\\.jpg|\\w+\\.png|\\w+\\.gif)$");
			Matcher matcher = pattern.matcher(fileName);
			if (!matcher.matches()) {
				//在此返回错误提示页面
			}
			// 创建新的文件名称
			String newFileName = String.valueOf(System.currentTimeMillis())
					+ fileName.substring(fileName.lastIndexOf("\\") + 1);
			// 在服务器根目录下创建images文件夹
			String realpath = request.getSession().getServletContext()
					.getRealPath("/images");
			// 在该文件夹下创建上传文件的文件对象
			File file = new File(realpath, newFileName);
			// 如果上传文件所在的文件夹不存在,则创建
			if (!file.getParentFile().exists())
				file.getParentFile().mkdir();
			// 建立文件输出流
			OutputStream outStream = new FileOutputStream(file);

			// 第一种上传方式
			InputStream inStream = uploadFile.getInputStream();
			byte[] data = new byte[1024];
			int len = 0;
			while ((len = inStream.read(data)) != -1) {
				outStream.write(data, 0, len);
			}
			// 第二种上传方式
			// outStream.write(uploadFile.getFileData());
			// 上传结束
			outStream.flush();
			outStream.close();
		}
		return null;
	}
}

 

2 Struts2文件上传
2.1 设计表单

 <form action="upload" method="post" enctype="multipart/form-data">
       	请选择要上传的文件:
       	<input type="file" name="upload">
       	<input type="submit" value="上传文件">
    </form>

 

2.2 在struts.xml中进行配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC 
	"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" 
	"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
    <!--  可以在此设置上传文件的大小,如超过这个大小,则抛出异常
    <constant name="struts.multipart.maxSize" value="80 * 1000"/>
     -->
    <package name="upload" namespace="/" extends="struts-default">
    	<action name="upload" class="com.upload.action.UploadAction" method="uploadFile">
    		<result name="success">/index.jsp</result>
    	</action>
    </package>
</struts> 

    

2.3 创建UploadAction类实现文件上传

package com.upload.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

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

public class UploadAction {
	// 得到上传的文件
	private File upload;
	// 得到上传文件的文件类型
	private String uploadContentType;
	// 得到上传文件的名称
	private String uploadFileName;

	public void setUpload(File upload) {
		this.upload = upload;
	}

	public void setUploadContentType(String uploadContentType) {
		this.uploadContentType = uploadContentType;
	}

	public void setUploadFileName(String uploadFileName) {
		this.uploadFileName = uploadFileName;
	}

	/**
	 * 文件上传
	 * 
	 * @return
	 */
	public String uploadFile() {
		if (upload != null) {
			// 如果是图片文件
			if ("image/pjpeg".equals(uploadContentType)
					|| "image/gif".equals(uploadContentType)) {

			String newFileName = String.valueOf(System.currentTimeMillis())
						+ uploadFileName;
				// 在服务器根目录下创建images文件夹
				String realpath = ServletActionContext.getServletContext()
						.getRealPath("/images");
				// 在该文件夹下创建上传文件的文件对象
				File destFile = new File(realpath, newFileName);
				System.out.println(destFile);
				// 如果上传文件所在的文件夹不存在,则创建
				if (!destFile.getParentFile().exists())
					destFile.getParentFile().mkdir();
				try {
					// 利用基本方法上传文件
					InputStream inStream = new FileInputStream(upload);
					OutputStream outStream = new FileOutputStream(destFile);
					byte[] data = new byte[1024];
					int len = 0;
					while ((len = inStream.read(data)) != -1) {
						outStream.write(data, 0, len);
					}
					// 利用Struts2中的FileUtils工具类将上传的文件拷贝到目标文件中
					// FileUtils.copyFile(upload, destFile);

					outStream.flush();
					outStream.close();
					inStream.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return "success";
	}
}

 

3 Struts2多文件上传
3.1 表单设计

<form action="upload" method="post" enctype="multipart/form-data">
       	请选择要上传的文件:<br>
       	<input type="file" name="upload"><br>
       	<input type="file" name="upload"><br>
       	<input type="file" name="upload"><br>
       	<input type="submit" value="上传文件">
    </form>

 

3.2 在struts.xml中进行配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC 
	"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" 
	"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
    <!--  可以在此设置上传文件的大小,如超过这个大小,则抛出异常
    <constant name="struts.multipart.maxSize" value="80 * 1000"/>
     -->
    <package name="upload" namespace="/" extends="struts-default">
    	<action name="upload" class="com.upload.action.UploadAction" method="uploadFile">
    		<result name="success">/index.jsp</result>
    	</action>
    </package>
</struts> 

 

3.3 创建UploadAction实现多文件上传

package com.upload.action;

import java.io.File;
import java.io.IOException;

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

public class UploadAction {
	// 得到上传的文件
	private File[] upload;
	// 得到上传文件的文件类型
	private String[] uploadContentType;
	// 得到上传文件的名称
	private String[] uploadFileName;

	public void setUpload(File[] upload) {
		this.upload = upload;
	}

	public void setUploadContentType(String[] uploadContentType) {
		this.uploadContentType = uploadContentType;
	}

	public void setUploadFileName(String[] uploadFileName) {
		this.uploadFileName = uploadFileName;
	}

	/**
	 * 文件上传
	 * 
	 * @return
	 */
	public String uploadFile() {
		if (upload != null) {
			String realpath = ServletActionContext.getServletContext()
					.getRealPath("/images");
			File saveDir = new File(realpath);
			if (!saveDir.exists()) saveDir.mkdirs();
			for (int i = 0; i < upload.length; i++) {
				if ("image/pjpeg".equals(uploadContentType[i])
						|| "image/gif".equals(uploadContentType[i])) {
					String newFileName = String.valueOf(System
							.currentTimeMillis()) + uploadFileName[i];
					File destFile = new File(saveDir, newFileName);
					try {
						FileUtils.copyFile(upload[i], destFile);
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
			}
		}
		return "success";
	}
}

 

 

--------------------------------------------

 补充:

                BufferedReader reader = new BufferedReader(new InputStreamReader(uploadFile.getInputStream()));
                List list = new ArrayList();
                reader.readLine();//跳过第一行
                String strLine;
                while ((strLine = reader.readLine()) != null) {
                    String[] str = strLine.split(",");
                    if (str.length > 0) {
                        list .add(str[0]);
                    }
                }

 

 

http://hi.baidu.com/tyb223/item/9b410922880703d5a417b627

分享到:
评论

相关推荐

    struts2实现文件上传下载

    1. **配置Struts2的文件上传** 在`struts.xml`配置文件中,为需要支持文件上传的Action添加`params`和`fileUpload`拦截器,并设置允许的最大上传大小。例如: ```xml ...

    struts2文件上传下载源代码

    1. **配置Struts2 Action**:在`struts.xml`配置文件中,你需要定义一个Action,该Action负责处理文件上传请求。Action的类需要继承自`ActionSupport`,并覆盖`execute()`方法,以便处理上传的文件。 2. **设置...

    struts2+jquery+ajax文件异步上传

    总的来说,"struts2+jquery+ajax文件异步上传"是一个结合了后端处理和前端交互的文件上传解决方案,提供了良好的用户体验和灵活性。通过MyEclipse这样的集成开发环境,开发者可以方便地构建、调试和部署这样的项目。

    struts1和struts2分别实现文件上传下载功能

    Struts1和Struts2是两个非常著名的Java Web框架,它们都提供了处理文件上传和下载的功能,但实现方式有所不同。本文将深入探讨这两个框架在文件操作方面的具体实现。 首先,让我们了解一下Struts1中的文件上传功能...

    Struts2多个文件上传

    总的来说,Struts2的多文件上传通过引入Apache Commons库,提供了简洁的API和配置,使得开发者能轻松处理用户上传的多个文件。无论是使用List集合还是数组,核心原理都是相同的,只是接收上传文件的对象类型不同。...

    struts1实现文件上传

    综上所述,Struts1中的文件上传功能实现涉及到多个核心组件和技术点的综合运用。开发者需要对Struts1框架有深入的理解,并熟练掌握相关API的使用方法。此外,在实际开发过程中还需要注意安全性问题,比如防止恶意...

    struts2框架下的文件上传

    本文将详细讲解Struts2框架下三种不同的文件上传方式:copy模式、字节流上传和字符流上传。 1. Copy模式文件上传: Copy模式是Struts2提供的一种简单易用的文件上传方式。它通过Struts2的`FileUploadInterceptor`...

    struts2文件上传和下载

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

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

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

    struts2 文件上传

    struts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileupload

    swfuplaod+struts2实现多文件上传

    SWFUpload 是一款开源的Flash上传组件,...通过上述步骤和注意事项,你可以利用SWFUpload和Struts2构建一个功能强大且安全的多文件上传功能。在实际项目中,根据需求进行适当的定制和优化,以满足用户需求和系统安全。

    struts1实现的文件批量上传

    在Struts1中实现文件上传,我们需要考虑前端的HTML表单、ActionForm、Struts配置文件以及后台的Action处理。 首先,前端实现是通过一个支持多文件选择的HTML表单来完成的。表单需要设置`enctype="multipart/form-...

    JavaEE Struts文件上传

    1. **配置Struts2 Action**:在Struts2中,我们需要创建一个Action类来处理文件上传请求。这个类通常需要实现`ServletRequestAware`接口,以便可以直接访问HttpServletRequest对象,从中获取上传文件。 2. **添加...

    Struts1实现的文件上传

    Struts1是一个经典的Java Web框架,它为开发者提供了一种结构化的MVC(Model-View-Controller)设计模式实现方式,极大地简化了Web...然而,了解Struts1的文件上传对于理解MVC模式和Web开发的基本原理仍然很有价值。

    struts2文件上传

    在Struts2框架中,文件上传是通过特定的拦截器实现的,这些拦截器处理了文件上传请求并提供了安全性和大小限制。下面将详细讨论这个主题。 首先,我们来看配置拦截器的部分。在Struts2中,`struts.xml`是配置文件,...

    struts2文件上传jar

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

    struts2文件上传实例

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

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

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

    struts1上传文件带进度条

    2. **后端处理**:在Struts1的Action中,我们需要自定义一个ActionForm,扩展`org.apache.struts.action.ActionForm`,并重写`execute()`方法来处理文件上传。在这个方法里,可以使用`FormFile`对象获取文件,并将其...

    Struts1 fileupload Struts1文件上传 源码下载

    Struts1的fileupload的文件上传

Global site tag (gtag.js) - Google Analytics