`

基于Struts FormFile上传文件

阅读更多
版权所有,欢迎转载,转载请注明转自http://www.suneca.com/

      有关文件上传的控件可能非常多,比如有用于学习的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 单文件上传和多文件上传带进度条

    在Struts中,可以实现单文件和多文件的上传,并且为了提升用户体验,我们还可以添加进度条来显示文件上传的状态。本文将详细介绍如何在Struts中实现这两个功能,并带上传进度条。 首先,我们需要了解Struts中处理...

    基于struts的文件上传下载源代码

    在本"基于Struts的文件上传下载源代码"中,我们可以深入理解Struts如何处理文件上传和下载操作,这对于初学者来说是一个非常实用的学习资源。 首先,文件上传在Web应用中是常见的功能,它允许用户从本地计算机选择...

    基于Struts文件上传(FormFile)详解

    本文将详细介绍基于Struts文件上传的实现方法,包括在JSP文件中定义文件上传表单、在Form表单中定义FormFile、利用Struts文件进行关联Form、获取上传文件的各种信息等。 在JSP文件中定义文件上传表单 在Struts中,...

    Struts1.2 formfile实现批量上传

    FormFile对象包含了上传文件的名称、类型、大小以及临时存储在服务器上的路径。 三、批量上传原理 批量上传涉及到同时处理多个文件的上传。用户在前端选择多个文件后,这些文件会被封装成多个FormFile对象,通过...

    struts2文件上传下载

    通过`List&lt;String&gt; imageContentType`可以获取上传文件的MIME类型,`List&lt;String&gt; imageFileName`则可以获取文件的原始文件名。这些信息对于正确处理上传的文件非常重要。 5. **上传成功后的提示** 在文件上传...

    struts1实现文件上传

    Struts1是Apache Struts的一个版本,它是一个用于构建基于Java的Web应用程序的开源框架。Struts1提供了MVC(Model-View-Controller)架构模式的支持,使得开发者能够更加清晰地组织代码结构,易于维护与扩展。 ####...

    jsp+struts文件上传

    2. 创建上传文件的JSP页面。 3. 编写Action类,使用Apache Commons FileUpload处理文件。 4. 验证和保存上传的文件。 5. 显示上传结果。 通过这种方式,你可以构建一个灵活且易于维护的文件上传系统。记住,文件...

    struts 文件上传 Struts实现文件上传

    - `FormFile`: 用于封装上传文件的信息,包括文件名、类型、大小等。 ### 4. 配置文件 在Struts配置文件(struts-config.xml)中,你需要添加`multipart-config`元素到`&lt;form-beans&gt;`部分,指定文件上传的临时存储...

    struts文件上传.pdf

    如果需要上传文件,该类中的相应属性应该声明为`org.apache.struts.action.FormFile`类型。Struts框架会自动将客户端上传的文件封装到FormFile对象中。 ```java public class BookForm extends ActionForm { ...

    struts 上传 和 smartupload上传

    Struts是Apache软件基金会下的一个开源项目,它是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。在Struts 1.x版本中,处理文件上传主要依赖于`org.apache.struts.upload.FormFile`类。在Struts 2中...

    struts+spring文件上传大小限制.rar

    如果上传文件大小超过这个限制,Struts会抛出`MaxUploadSizeExceededException`异常。 2. Spring框架中的文件上传: Spring提供了`CommonsMultipartFile`类来处理文件上传,它是基于Apache Commons FileUpload库的...

    struts实现多文件上传1.txt

    ### Struts实现多文件上传详解 #### 一、概述 在Web应用开发中,文件上传是常见的需求之一。尤其在需要用户批量提交多个文件时,就需要实现多文件上传功能。Struts框架作为Java Web开发中非常成熟的一个MVC框架,...

    struts文件上传例子及页面基本标签用法

    Struts是一个开源的Java Web应用程序框架,它极大地简化了创建基于MVC(Model-View-Controller)模式的Web应用。在Struts框架中,文件上传功能是一个常见的需求,尤其是在处理用户提交表单时,比如上传图片、文档等...

    struts 图片上传demo

    5. **文件大小和类型限制**:在Action类中,可以通过`FormFile`对象获取上传文件的信息,包括文件名、大小、类型等。我们可以根据业务需求设定大小限制,如果超过限制则抛出异常或者提示用户。同时,可以检查文件的...

    struts1.2上传图片源代码(包含检查文件格式、限制文件大小功能)

    Struts1.2是一个经典的Java Web开发框架,用于构建基于MVC(模型-视图-控制器)模式的应用程序。在本示例中,它被用来实现一个图片上传功能,同时包含了对文件格式和大小的检查,以确保上传的安全性和有效性。下面...

    struts1.0的上传代码

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

    struts文件上传例子

    最后,用户成功上传文件后,会被重定向到`/jsp/success.jsp`页面,你可以在该页面上显示上传结果。 这个"struts文件上传例子"是一个基础的实践教程,对于了解Struts框架如何处理文件上传非常有帮助。通过学习和理解...

    struts1.2上传图片例子

    本文通过一个基于Struts 1.2的图片上传示例,详细介绍了如何在Struts框架下实现文件上传功能。通过对核心代码的分析,我们不仅了解了文件上传的基本流程,还学习了如何在Struts中配置和处理文件上传的过程。这对于...

    struts 制作的文件上传小项目

    7. **显示上传文件**:在上传成功后,可以将文件的URL或名称传递回JSP页面,通过`&lt;img&gt;`标签或者超链接展示或访问已上传的文件。 8. **安全考虑**:在实际项目中,确保文件上传安全至关重要。应避免上传可执行文件...

    struts_文件上传

    1. **Struts框架基础**:Struts是一个基于MVC(Model-View-Controller)设计模式的框架,它简化了Java Web开发。在Struts中,ActionForm负责接收和验证用户输入,Controller(通常是一个Struts Action)处理业务逻辑...

Global site tag (gtag.js) - Google Analytics