我的漫漫程序之旅

专注于JavaWeb开发
随笔 - 39, 文章 - 310, 评论 - 411, 引用 - 0
数据加载中……

Struts1.2实现单文件上传

jsp:
<%@ page language="java" pageEncoding="GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> 
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
 
<html> 
    
<head>
        
<title>JSP for UpfileForm form</title>
    
</head>
    
<body>
        
<html:form action="/upfile" enctype="multipart/form-data">
            file : 
<html:file property="file" /><html:errors property="file"/><br/>
            
<html:submit value="确定"/>
        
</html:form>
    
</body>
</html>

注意表单类型必须为:enctype="multipart/form-data".
Struts-Config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
  
<data-sources />
  
<form-beans >
    
<form-bean name="upfileForm" type="com.yourcompany.struts.form.UpfileForm" />

  
</form-beans>

  
<global-exceptions />
  
<global-forwards />
  
<action-mappings >
    
<action
      
attribute="upfileForm"
      input
="/upfile.jsp"
      name
="upfileForm"
      path
="/upfile"
      scope
="request"
      type
="com.yourcompany.struts.action.UpfileAction" />

  
</action-mappings>

  
<message-resources parameter="com.yourcompany.struts.ApplicationResources" />
</struts-config>


web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  
<servlet>
    
<servlet-name>action</servlet-name>
    
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    
<init-param>
      
<param-name>config</param-name>
      
<param-value>/WEB-INF/struts-config.xml</param-value>
    
</init-param>
    
<init-param>
      
<param-name>debug</param-name>
      
<param-value>3</param-value>
    
</init-param>
    
<init-param>
      
<param-name>detail</param-name>
      
<param-value>3</param-value>
    
</init-param>
    
<load-on-startup>0</load-on-startup>
  
</servlet>
  
<servlet-mapping>
    
<servlet-name>action</servlet-name>
    
<url-pattern>*.do</url-pattern>
  
</servlet-mapping>
  
<welcome-file-list>
    
<welcome-file>index.jsp</welcome-file>
  
</welcome-file-list>
</web-app>

UpfileForm.java:
/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 
*/

package com.yourcompany.struts.form;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

/** 
 * MyEclipse Struts
 * Creation date: 09-28-2007
 * 
 * XDoclet definition:
 * @struts.form name="upfileForm"
 
*/

public class UpfileForm extends ActionForm {
    
/*
     * Generated fields
     
*/


    
/** file property */
    
private FormFile file;


    
/*
     * Generated Methods
     
*/


    
/** 
     * Method validate
     * 
@param mapping
     * 
@param request
     * 
@return ActionErrors
     
*/

    
public ActionErrors validate(ActionMapping mapping,
            HttpServletRequest request) 
{
        
// TODO Auto-generated method stub
        return null;
    }


    
/** 
     * Method reset
     * 
@param mapping
     * 
@param request
     
*/

    
public void reset(ActionMapping mapping, HttpServletRequest request) {
        
// TODO Auto-generated method stub
    }


    
public FormFile getFile() {
        
return file;
    }


    
public void setFile(FormFile file) {
        
this.file = file;
    }


    
}

UpfileAction.java:
/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 
*/

package com.yourcompany.struts.action;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

import com.yourcompany.struts.form.UpfileForm;

/** 
 * MyEclipse Struts
 * Creation date: 09-28-2007
 * 
 * XDoclet definition:
 * @struts.action path="/upfile" name="upfileForm" input="/upfile.jsp" scope="request" validate="true"
 
*/

public class UpfileAction extends Action {
    
/*
     * Generated Methods
     
*/


    
/** 
     * Method execute
     * 
@param mapping
     * 
@param form
     * 
@param request
     * 
@param response
     * 
@return ActionForward
     
*/

    
public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) 
{
        UpfileForm upfileForm 
= (UpfileForm) form;
        FormFile file 
= upfileForm.getFile();
        FileOutputStream fileOutput;
        
        
try {
            fileOutput 
= new FileOutputStream("d://" + file.getFileName());
            fileOutput.write(file.getFileData());
            fileOutput.flush();
            fileOutput.close();
        }
 catch (FileNotFoundException e) {
            e.printStackTrace();
        }
 catch (IOException e) {
            e.printStackTrace();
        }

        
        

        
return null;
    }

}
当然对于Form我们也可以用动态的:
LazyValidatorForm uploadForm = (LazyValidatorForm) form;
然后FormFile可以直接 通过form得到:
FormFile formFile = uploadForm.get("file");

相应的在web.xml中的配置:
<form-bean name="uploadForm" type="org.apache.struts.validator.LazyValidatorForm" />

源码下载


posted on 2008-01-31 18:11 々上善若水々 阅读(12042) 评论(3)  编辑  收藏 所属分类: Struts1.x

评论

# re: Struts1.2实现单文件上传  回复  更多评论   

方法太牛比了。mail:yaoyao19851023@163.com
2008-11-19 13:07 | yaoyao

# re: Struts1.2实现单文件上传  回复  更多评论   

不靠谱,用接口里的方法如何得到文件流?
FormFile file = upfileForm.getFile();
FileOutputStream fileOutput;

try {
fileOutput = new FileOutputStream("d://" + file.getFileName());
fileOutput.write(file.getFileData());
2011-05-03 10:16 | Stan

# re: Struts1.2实现单文件上传[未登录]  回复  更多评论   

文件过大怎么么处理呀?谢啦
2012-05-12 19:24 | 陈晨

只有注册用户登录后才能发表评论。


网站导航: