Struts2文件上传:
上传页面:index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>文件上传测试</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <p>文件上传</p> <form action="fileAction" method="post" enctype="multipart/form-data" name="form1"> <p>标题: <input type="text" name="title" id="title"> </p> <p>文件: <input type="file" name="process" id="process"> </p> <p> <input type="submit" name="button" id="button" value="提交"> </p> </form> <p> <br> </p> </body> </html>
对应后台接收类:
package com.model.dto; import java.io.File; public class FileModel { private String title = null; private File process = null; private String uploadContentType = null; private String savePath = null; public String getUploadContentType() { return uploadContentType; } public void setUploadContentType(String uploadContentType) { this.uploadContentType = uploadContentType; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public File getProcess() { return process; } public void setProcess(File process) { this.process = process; } public String getSavePath() { return savePath; } public void setSavePath(String savePath) { this.savePath = savePath; } }
处理的Action:
package com.action; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.apache.struts2.ServletActionContext; import com.model.dto.FileModel; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class FileAction extends ActionSupport implements ModelDriven<FileModel>{ private FileModel fileModel = new FileModel(); public String execute(){ System.out.println(fileModel.getTitle()); System.out.println(fileModel.getSavePath()); System.out.println(fileModel.getProcess()); try { File f = new File(ServletActionContext.getRequest().getRealPath(fileModel.getSavePath())); if(!f.exists()){ f.mkdirs(); } FileOutputStream fos = new FileOutputStream(f+"/1.txt"); FileInputStream fis = new FileInputStream(fileModel.getProcess()); byte [] b = new byte[1024]; while((fis.read(b))!=-1){ fos.write(b, 0, b.length); } fos.close(); fis.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return SUCCESS; } public FileModel getModel() { return fileModel; } }
Action的配置文件:
<?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.enable.DynamicMethodInvocation" value="true" /> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="fileAction" class="com.action.FileAction" > <param name="savePath">/upload</param> <result> /success.jsp </result> </action> </package> <!-- Add packages here --> </struts>