Struts2的上传文件功能实现
package com.sterning; import java.io.File; import javax.servlet.ServletContext; import org.apache.commons.io.FileUtils; import org.apache.struts2.util.ServletContextAware; import com.opensymphony.xwork2.ActionSupport; public class StrutsFileUpload extends ActionSupport implements ServletContextAware { private File upload;// 实际上传文件 private String uploadContentType; // 文件的内容类型 private String uploadFileName; // 上传文件名 private String fileCaption;// 上传文件时的备注 private ServletContext context; public String execute() throws Exception { try { String targetDirectory = context.getRealPath("/upload"); String targetFileName = uploadFileName; File target = new File(targetDirectory, targetFileName); FileUtils.copyFile(upload, target); setUploadFileName(target.getPath());//保存文件的存放路径 } catch (Exception e) { addActionError(e.getMessage()); return INPUT; } return SUCCESS; } public String getFileCaption() { return fileCaption; } public void setFileCaption(String fileCaption) { this.fileCaption = fileCaption; } public File getUpload() { return upload; } public void setUpload(File upload) { this.upload = upload; } public String getUploadContentType() { return uploadContentType; } public void setUploadContentType(String uploadContentType) { this.uploadContentType = uploadContentType; } public String getUploadFileName() { return uploadFileName; } public void setUploadFileName(String uploadFileName) { this.uploadFileName = uploadFileName; } public void setServletContext(ServletContext context) { this.context = context; } }
?
<%@ page language="java" contentType="text/html; charset=GB2312"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>文件上传示例</title> <link href="<s:url value="/css/main.css"/>" rel="stylesheet" type="text/css" /> </head> <body> <s:actionerror /> <s:fielderror /> <s:form action="doUpload" method="POST" enctype="multipart/form-data"> <tr> <td colspan="2"> <h1> 文件上传示例 </h1> </td> </tr> <s:file name="upload" label="上传的文件" /> <s:textfield name="fileCaption" label="备注" /> <s:submit value="上 传"/> </s:form> </body> </html>
?
<%@ page language="java" contentType="text/html; charset=GB2312"%> <%@ taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>上传成功</title> <link href="<s:url value="/css/main.css"/>" rel="stylesheet" type="text/css" /> </head> <body> <table /> </td> </tr> <tr> <td /> </td> </tr> <tr> <td /> </td> </tr> <tr> <td /> </td> </tr> </table> </body> </html>
?
<?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.devMode" value="true" /> <constant name="struts.i18n.encoding" value="GB2312" /> <package name="NG" namespace="/" extends="struts-default"> <action name="showUpload"> <result>/upload.jsp</result> </action> <action name="doUpload" name="code"><?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>customization</display-name> <filter> <filter-name>struts-cleanup</filter-name> <filter-class> org.apache.struts2.dispatcher.ActionContextCleanUp </filter-class> </filter> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts-cleanup</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
?