Struts2实现单文件上传

来源:互联网 发布:数据的真实性 编辑:程序博客网 时间:2024/05/17 03:57

首先配置一下web.xml

<?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"><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class><init-param><param-name>config</param-name><param-value>struts-default.xml,struts-plugin.xml,../struts.xml</param-value></init-param></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>


新建一个上传页面:upload.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title></title></head><body><form action="upload.action" method="post" enctype="multipart/form-data">file:<input type="file" name="file" /><br> <input type="submit" value="submit"/></form></body></html>


 

UploadAction.java:

package com.struts2.action;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport {private static final long serialVersionUID = 1L;/** 文件 */private File file;/** 文件名 */private String fileFileName;/** 文件类型 */private String fileContentType;public File getFile() {return file;}public void setFile(File file) {this.file = file;}public String getFileFileName() {return fileFileName;}public void setFileFileName(String fileFileName) {this.fileFileName = fileFileName;}public String getFileContentType() {return fileContentType;}public void setFileContentType(String fileContentType) {this.fileContentType = fileContentType;}@Overridepublic String execute() throws Exception {String uploadPath = ServletActionContext.getServletContext().getRealPath("/upload");InputStream is = new FileInputStream(file);OutputStream os = new FileOutputStream(new File(uploadPath,this.fileFileName));int length = 0;byte[] buffer = new byte[1024];while (-1 != (length = is.read(buffer))) {os.write(buffer, 0, length);}is.close();os.close();return SUCCESS;}}


上传成功后的页面uploadResult.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title></title></head><body>upload successfully!</body></html>


最后配置一下struts.xml

<?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.i18n.encoding" value="UTF-8" /><constant name="struts.multipart.maxSize" value="104857600" /><package name="struts2" extends="struts-default"><!-- 单文件上传 --><action name="upload" class="com.struts2.action.UploadAction"><result name="success">/uploadResult.jsp</result></action></package>