使用struts實現單文件上傳

 文件上傳的功能在Struts2中也得到了非常好的封裝,主要使用的是fileUpload上傳組件。

我使用的開發工具是:MyEclipse8.5

           Web服務器:Tomcat6

          Struts版本: struts-2.2.1

           JDK版本:JDK1.6.0_21

           J2EE版本:Java EE5.0

新建一個webproject,將struts的jar包粘貼到WEB-INF下的lib下(搭建環境),只需這幾個jar包就可以了:

       commons-fileupload-1.2.1.jar

       commons-io-1.3.2.jar

       commons-logging-1.0.4.jar

       freemarker-2.3.15.jar

       ognl-2.7.3.jar

       struts2-core-2.1.8.jar

       xwork-core-2.1.6.jar

其代碼如下:

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page isELIgnored="false"%>
<%@ taglib uri="/struts-tags" prefix="s"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

	<body>
		<s:form action="aa.action" method="post" enctype="multipart/form-data">
		               <s:file name="uploadFile"></s:file>
			<br />
			<s:submit value="提交"></s:submit>
		</s:form>
	</body>
</html>

 配置文件

struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
	<package name="struts3.1" extends="struts-default">
		<action name="aa" class="controller.Register">

			<result name="register">/showregister.jsp</result>
			<result name="input">/index.jsp</result>

		</action>
	</package>
<constant name="struts.ui.theme" value="simple"></constant>
</struts>

 

web.xml

<?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>
	
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 

struts.properties

#設置最大的上傳文件的大小
struts.multipart.maxSize=2048000000
#設置最大的上傳文件的臨時目錄
struts.multipart.saveDir=/tempUploadFile

 Register.java

package controller;

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

import com.opensymphony.xwork2.ActionSupport;

public class Register extends ActionSupport {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public File getUploadFile() {
		return uploadFile;
	}

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



    private File uploadFile;//對應表單裏的 name="uploadFile"
	private String uploadFileFileName;//必須是以類型爲File的變量名後面加上FileName

	public String getUploadFileFileName() {
		return uploadFileFileName;
	}

	public void setUploadFileFileName(String uploadFileFileName) {
		this.uploadFileFileName = uploadFileFileName;
	}

	@Override
	public void validate() {

	}

	@SuppressWarnings("deprecation")
	public String execute() {

		try {
                //取得上傳後文件要存放的路徑
			String targetDirectory = ServletActionContext.getRequest().getRealPath(
					"/upload");//存儲到apache項目發佈目錄上 
             String targetDirectory="D:\\a1/upload";//存儲到項目文件夾裏 
          //生成上傳的File文件
			File file = new File(targetDirectory, uploadFileFileName);
              //複製File對象,從而實現上傳文件
			FileUtils.copyFile(uploadFile, file);

		} catch (Exception e) {

			e.printStackTrace();
		}

		return "register";

	}

}

 

showregister.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

 <body>
  上傳成功!
 </body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章