Struts2实现单文件上传

首先配置一下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;

	}



	@Override

	public 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>


 

 

你可能感兴趣的:(struts2)