第十六部分_Struts2.1文件上传详解

文件上传要求:

  • 表单设为post
  • enctype="multipart/form-data"
  • 服务器端File对应的名字与jsp中指定的文件name相同(对于真正上传的文件), 而String *FileName对应上传的文件名(*表示jsp中文件name)
  • 添加Jar包(commons-io-1.3.2.jar),否则上传失败,抛出io相关类找不到的信息。 否则文件上传失败

首先,写一个upload.jsp:

引入标签库:

<%@ taglib uri="/struts-tags" prefix="s"%>

body体中(struts标签默认表单提交方式为post):

 <body> 

   

	<s:form action="upload" enctype="multipart/form-data">

		

		<s:file name="file"></s:file>

		<s:submit value="submit"></s:submit>

	

	</s:form>

  </body>

对应的UploadAction为:

package com.test.action;



import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.OutputStream;



import com.opensymphony.xwork2.ActionSupport;



public class UploadAction extends ActionSupport

{

	private File file; // 对应真正上传的文件

	

	private String fileFileName; // 对应上传的文件名



	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;

	}

	

	@Override

	public String execute() throws Exception

	{

		

		

		InputStream is = new FileInputStream(file);

		OutputStream os = new FileOutputStream("E:\\Desktop\\" + fileFileName);

		

		byte[] buffer = new byte[1024];

		int length = 0;

		

		while(-1 != (length = is.read(buffer)))

		{

			os.write(buffer, 0, length);

		}

		

		os.close();

		is.close();

		

		return SUCCESS;

	}

}

结果页面很简单uploadResult.jsp:

<body>

    Upload success~~

</body>

struts对应的配置为:

<action name="upload" class="com.test.action.UploadAction">

				<result name="success">/uploadResult.jsp</result>

</action>

web.xml一如既往从struts的部分开始就没变过:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.5" 

	xmlns="http://java.sun.com/xml/ns/javaee" 

	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 

	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

  

  <filter>

  	<filter-name>struts2</filter-name>

  	<filter-class>

  		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

  	</filter-class>

  </filter>

  

  <filter-mapping>

  	<filter-name>struts2</filter-name>

  	<url-pattern>/*</url-pattern>

  </filter-mapping>

  

  

</web-app>

最后引入struts2中的第三方JAR包,在原有六个包的情况下,添加commons-io-1.3.2.jar,打开http://localhost:8080/struts2/upload.jsp,选择文件即可完成上传。

 

你可能感兴趣的:(struts2)