Struts2文件上传的简单示例
2013-08-20 14:03
357 查看
1. 新建一个Struts2应用,注意要将commons-fileupload-1.3.jar和commons-io-2.0.1.jar这两个jar包复制到WEB-INF\lib目录下。
2. 简单的文件上传页面index.jsp:
3. 用于处理文件上传的UploadAction:
4. 配置struts.xml文件,配置了国际化资源,实现文件过滤的拦截器还有UploadAction:
5. 当文件过滤失败后,跳转回index.jsp视图后,Struts2的标签会自动显示上传失败的提示信息,但是提示的英文信息,上传文件类型不允许和上传文件太大的提示信息的key分别是struts.messages.error.content.type.not.allowed和struts.messages.error.file.too.large,可以在自己的国际化资源文件中增加该key的消息,以改变提示信息。国际化资源文件msg_zh_CN.properties(需要要native2ascii工具处理):
6. 文件上传成功的视图success.jsp:
2. 简单的文件上传页面index.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>文件上传</title> </head> <body> <!-- 必须将表单的 method设置为post,enctype设置为multipart/form-data, 浏览器才会把用户选择的文件的二进制数据发送给服务器 --> <s:form action="uploadAction" method="post" enctype="multipart/form-data"> <s:textfield name="title" label="文件标题"/><br/> <!-- 文件域 --> <s:file name="upload" label="选择文件"/><br/> <s:submit value="上传"/> </s:form> </body> </html>
3. 用于处理文件上传的UploadAction:
package com.huey.action; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; /** * UploadAction,用户处理文件上传 * @version 2013-08-20 * @author Huey2672 * */ public class UploadAction extends ActionSupport { /** * */ private static final long serialVersionUID = 5288901795536794634L; private String title; // upload封装了表单中的文件域,其类型为java.io.File private File upload; // uploadFileName封装了文件upload的文件名 private String uploadFileName; // uploadContentType封装了文件upload的文件类型 private String uploadContentType; // savePath属性通过配置文件struts.xml设置 private String savePath; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public File getUpload() { return upload; } public void setUpload(File upload) { this.upload = upload; } public String getUploadFileName() { return uploadFileName; } public void setUploadFileName(String uploadFileName) { this.uploadFileName = uploadFileName; } public String getUploadContentType() { return uploadContentType; } public void setUploadContentType(String uploadContentType) { this.uploadContentType = uploadContentType; } /** * 获取上传文件的保存路径 * @return * @throws Exception */ public String getSavePath() throws Exception { return ServletActionContext.getServletContext() .getRealPath("/WEB-INF/" + savePath); } public void setSavePath(String savePath) { this.savePath = savePath; } @Override public String execute() throws Exception { // 以服务器上传文件的保存目录和文件名创建输出流 FileOutputStream fos = new FileOutputStream(getSavePath() + "\\" + getUploadFileName()); // 以上传的文件创建输入流 FileInputStream fis = new FileInputStream(getUpload()); byte[] buffer = new byte[1024]; int len = 0; while ((len = fis.read(buffer)) > 0) { fos.write(buffer, 0, len); } // 关闭输入输出流 fis.close(); fos.close(); return SUCCESS; } }
4. 配置struts.xml文件,配置了国际化资源,实现文件过滤的拦截器还有UploadAction:
<?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.custom.i18n.resources" value="msg"/> <!-- 指定Struts2文件上传过程中的临时文件夹 --> <constant name="struts.multipart.saveDir" value="D:\\apache-tomcat-6.0.36\\webapps\\UploadingDemo\\WEB-INF\\upload\\tmp"/> <package name="loadup" extends="struts-default"> <action name="uploadAction" class="com.huey.action.UploadAction"> <!-- 通过fileUpload拦截器实现文件过滤, 当文件过滤失败后,系统将转如input逻辑视图 --> <interceptor-ref name="fileUpload"> <!-- 配置允许上传的文件类型 --> <param name="allowedTypes">image/png,image/gif,image/jpeg,image/jpg</param> <!-- 配置允许上传的文件大小,单位是字节 --> <param name="maximumSize">2048</param> </interceptor-ref> <!-- 还必须显示配置Struts默认的拦截器,且fileUpload配置在前 --> <interceptor-ref name="defaultStack"/> <param name="savePath">/upload</param> <result name="success">success.jsp</result> <result name="input">index.jsp</result> </action> </package> </struts>
5. 当文件过滤失败后,跳转回index.jsp视图后,Struts2的标签会自动显示上传失败的提示信息,但是提示的英文信息,上传文件类型不允许和上传文件太大的提示信息的key分别是struts.messages.error.content.type.not.allowed和struts.messages.error.file.too.large,可以在自己的国际化资源文件中增加该key的消息,以改变提示信息。国际化资源文件msg_zh_CN.properties(需要要native2ascii工具处理):
struts.messages.error.content.type.not.allowed=只能上传图片!请重新选择! struts.messages.error.file.too.large=上传的文件太大,请重新选择!
6. 文件上传成功的视图success.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>上传成功</title> </head> <body> 上传成功! </body> </html>
相关文章推荐
- Struts2上传文件示例 【转】
- Struts2上传文件示例
- Java实现拖拽文件上传dropzone.js的简单使用示例代码
- struts2学习笔记--上传单个和批量文件示例
- Struts2(多)文件上传和下载使用示例
- 基于struts2的文件上传示例
- 使用Struts2简单的基本文件上传下载实现
- Servlet3.0文件上传简单示例
- struts2开发文件上传下载的简单实例
- Vue封装一个简单轻量的上传文件组件的示例
- Struts2上传与下载文件 简单例子
- java中Struts2 的文件上传和下载示例
- 使用Uploadify插件在struts2中实现多文件上传示例
- Struts2实现简单的文件上传
- java 文件上传 与 把文件解析成一个字节数组简单的后台示例
- Struts2简单的 单文件上传Demo
- Struts2自带的上传方法(简单实用)案例图片上传,文件也可,
- C# 上传文件到 Java(struts2)端示例
- struts2学习笔记--上传单个和批量文件示例
- 一个简单的struts实现文件上传示例