`
sd8089730
  • 浏览: 258750 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

Struts 1.x FormFile UploadFile

阅读更多
 有关文件上传的控件可能非常多,比如有用于学习的SmartUpload、性能非常好的COS组件、有Apache的FileUpload组件、有Struts的FormFile组件、有Spring上传文件,还有其他一些开发的控件等等。假如你是用Struts,那基于Struts FormFile组件应该是一个不错的选择。
      Struts FormFile跟Struts ActionForm结合得非常好,使用起来也非常简单,但是,对于同时上传多个附件,那就有点麻烦了!不管怎么样,它还是一个好东西,关键看大家怎么看待他了!
      第一步,我们创建一个新的Struts工程,创建一个FileUploadForm,FileUploadForm如下所示:

 程序代码
package zizz.struts;

import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;

/**
* 基于Struts FormFile的文件上传.
* @author chen yuzhe
*
*/
public class FileUploadForm extends ActionForm{
    
    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = -7794872310588861856L;
    
    /**
     * 上传的文件 
     */
    private FormFile uploadFile;

    public FormFile getUploadFile() {
        return uploadFile;
    }

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



      第二步,创建一个Action,用于处理上传的文件及保存在服务器的路径,FileUploadAction文件内容如下

 程序代码
package zizz.struts;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

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;

/**
* 文件上传的Action,该类用于处理FormFile及将上传的文件保存到磁盘的指定位置.
* @author ZIZZ
*
* @Create-Time:2007-12-26 下午03:35:37
*/
public class FileUploadAction extends Action {
    
    /**
     * 上传的文件保存在服务器的路径
     */
    private static String UPLOAD_FILE_PATH = "c:/income/";

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form, 
            HttpServletRequest request, HttpServletResponse response) throws Exception {
        FileUploadForm uploadForm = (FileUploadForm)form;
        //得到上传的文件
        FormFile uploadFile = uploadForm.getUploadFile();
        //得到文件名
        String fileName = uploadFile.getFileName();
        //得到文件大小
        int fileSize = uploadFile.getFileSize();
        System.out.println("FileName = " + fileName);
        System.out.println("FileSize=" + fileSize);
        boolean result = true;
        try{
            //得到文件的输入流
            InputStream is = uploadFile.getInputStream();
            //上传文件
            uploadFile(fileName,is);
        }catch(IOException ex){
            ex.printStackTrace();
            //假如上传文件失败,设置一个失败的标记位
            result = false;
        }
        if(result){
            return mapping.findForward("success");
        } else {
            return mapping.findForward("fail");
        }        
    }
    
    /**
     * 上传文件
     * @param fileName
     * @param is
     * @throws IOException
     */
    private void uploadFile(String fileName,InputStream is) throws IOException{
        OutputStream os = new FileOutputStream(UPLOAD_FILE_PATH + fileName);
        //8k缓存数据
        byte[] buffer = new byte[1024 * 8];
        //设置读进缓存的字节数
        int len;
        while((len=is.read(buffer))!=-1){
            //将缓存数据写入磁盘
            os.write(buffer,0,len);
        }
        //关闭输出流
        os.close();
        //关闭输入流
        is.close();
    }

}



     第三步,编写文件上传的jsp文件

 程序代码
<%@ page language="java" contentType="text/html; charset=GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <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">
  </head>
  
  <body>
    <html:form action="/upload" enctype="multipart/form-data">
        上传文件:<html:file property="uploadFile"></html:file> 
        <html:submit value="上传文件"></html:submit>
    </html:form>
  </body>
</html>


      第四步,配置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="fileUploadForm" type="zizz.struts.FileUploadForm"></form-bean>
  </form-beans>
  <global-exceptions />
  <global-forwards />
  <action-mappings>
      <action path="/upload" name="fileUploadForm" scope="request" type="zizz.struts.FileUploadAction">
          <forward name="success" path="/success.jsp" redirect="true"></forward>
          <forward name="fail" path="/fail.jsp" redirect="true"></forward>
      </action>
  </action-mappings>
  <message-resources parameter="zizz.struts.ApplicationResources" />
</struts-config>

 

分享到:
评论

相关推荐

    Struts+1.x文件的上传和下载.txt

    Struts 1.x中的文件上传和下载功能是基于一系列API和类库实现的,包括`FormFile`、`InputStream`和`OutputStream`等。这些功能不仅增强了Web应用的交互性,还提高了数据管理的灵活性。开发者应熟练掌握这些技术细节...

    struts实现多文件上传1.txt

    file.saveAs(uploadFile.getAbsolutePath()); } } return mapping.findForward("success"); } } ``` 在这个Action类中,我们获取了上传的文件列表,并逐个保存到服务器端指定的目录下。 #### 四、配置Struts...

    Struts1实现的文件上传

    Struts1提供了`org.apache.struts.upload.FormFile`类来处理上传的文件。你可能需要重写`execute()`方法,代码如下: ```java public ActionForward execute(ActionMapping mapping, ActionForm form, ...

    struts1 多个文件上传

    在Struts1中,文件上传功能是通过`org.apache.struts.upload.FormFile`类和相应的配置来实现的。这篇内容将深入探讨Struts1中的单个文件上传和多个文件上传的实现机制。 首先,我们来看单个文件上传。在Struts1中,...

    struts1实现文件上传和下载

    在Struts1中,文件上传主要通过`org.apache.struts.upload.FormFile`类来完成。在给定的代码片段中,`FileAction`类继承自`DispatchAction`,这是Struts1中用于处理不同请求的基类。`upLoadFile`方法是处理文件上传...

    struts1下图片上传下载

    ### Struts1 下图片上传与下载技术解析 #### 一、引言 在Web开发中,文件上传与下载是一项常见的需求。Struts1框架作为Java Web应用开发中的一个重要工具,提供了丰富的功能支持来实现文件上传下载。本文将详细介绍...

    经典的struc提供的文件上传

    在Struts中,文件上传的核心组件是`org.apache.struts.upload.FormFile`类。这个类代表了用户上传的文件,包含了文件的名称、类型、大小以及临时存储的路径等信息。在处理文件上传时,我们需要在ActionForm中定义一...

    Struts1[1].2实现单文件上传讲解.doc

    1. 创建JSP页面:在`&lt;samples&gt;`工程目录下创建`uploadFile.jsp`,其中包含`&lt;html:form&gt;`标签,并设置`enctype="multipart/form-data"`,这是处理文件上传所必需的。`&lt;html:file&gt;`标签用于让用户选择要上传的文件。 ...

    jsp+struts文件上传

    1. 在Struts配置文件中定义Action。 2. 创建上传文件的JSP页面。 3. 编写Action类,使用Apache Commons FileUpload处理文件。 4. 验证和保存上传的文件。 5. 显示上传结果。 通过这种方式,你可以构建一个灵活且...

    [浪曦原创]Struts系列 第7讲 Struts的文件上传操作(zk001)

    - 首先,我们需要在Struts的配置文件(如struts-config.xml)中配置ActionForm,声明一个继承自`org.apache.struts.upload.FormFile`的字段,用于存储上传的文件信息。 2. **JSP页面**: - 在JSP页面上,创建一个...

    struts实现的上传下载

    uploadFile.getFileName().isEmpty()) { // 保存文件到服务器 saveUploadedFile(uploadFile); } } catch (Exception e) { // 处理异常 } return mapping.findForward("success"); } private void ...

    java文件上传方法

    uploadFile.exists() || uploadFile == null) { uploadFile.mkdirs(); }` 检查目标目录是否存在,不存在则创建。 2. **文件写入循环**: - `while ((bytesRead = streamIn.read(buffer, 0, 8192)) != -1) {` 循环...

    Struts实现文件的上传下载

    创建一个继承自`org.apache.struts.upload.FormFile`的ActionForm类,用于存储上传的文件信息。在Action类中,你需要处理文件的实际上传,例如将其保存到服务器的指定位置。 ```java public class UploadForm ...

    struts1.0的上传代码

    对于文件上传,我们需要在Bean中声明一个类型为`org.apache.struts.upload.FormFile`的属性,比如`uploadFile`,它将用来存储上传文件的信息。 4. **JSP页面**:创建一个HTML表单,包含一个`&lt;input type="file"&gt;`...

    Struts 文件上传

    在Java Web应用中,Struts框架提供了一种优雅的方式来处理文件上传,它利用了`org.apache.struts.upload.FormFile`类来封装上传的文件信息。下面将详细解释这个过程。 首先,我们从用户界面开始。在HTML表单中,...

    struts中文件的上传与下载

    1. **配置文件上传**:首先需要在Struts配置文件(struts-config.xml)中启用文件上传功能,并设置相应的参数,例如文件大小限制等。 ```xml &lt;struts-config&gt; &lt;constant name="struts.multipart.maxSize" value...

    51CTO下载-FileUploadStruts

    1. Struts框架的MVC模式和ActionForm概念。 2. 使用Apache Commons FileUpload库处理文件上传。 3. 在JSP页面中创建文件上传表单。 4. 配置Struts的ActionForm和Action类来接收和处理上传的文件。 5. 文件上传的安全...

Global site tag (gtag.js) - Google Analytics