Struts2文件上传

来源:互联网 发布:mac终端如何切换用户 编辑:程序博客网 时间:2024/06/16 12:38

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>