`
jayyanzhang2010
  • 浏览: 377894 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

struts1中的文件上传

阅读更多

在 struts1 和 2 中,分别对 commons-fileupload 组件进行了包装,使文件上传操作更方便。

本文讲解如何使用 struts1 上传文件。

步骤:

    1 编写 jsp 页面

    2 给 jsp 中的 form 表单配置一个 ActionForm

    3 编写 Action ,处理文件上传功能

    4 配置 struts-config.xml 文件

    5 测试



1、 首先有个 jsp 页面 —upload_form.jsp

<%@ page language = "java" contentType = "text/html; charset=ISO-8859-1"

    pageEncoding = "ISO-8859-1" %>

<%@ taglib uri = "/WEB-INF/struts-html.tld" prefix = "html" %>

<! DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >

< html >

< head >

< meta http-equiv = "Content-Type" content = "text/html; charset=ISO-8859-1" >

< title > Upload File </ title >

</ head >

< body >

    < html:form action = " upload.do " method = "post" enctype = " multipart/form-data " >

        < html:file property = " file " ></ html:file >

        < input type = "submit" value = "Submit" />

    </ html:form >

</ body >

</ html >

其中的 action 是指提交到的 action

enctype 是指表单提交的数据格式



2 给上面的 jsp 中表单配一个 ActionForm –UploadForm

public class UploadForm extends ActionForm {

    private static final long serialVersionUID = 1L;

  

    private FormFile file ;

    public FormFile getFile() {

        return file ;

    }

    public void setFile(FormFile file) {

        this . file = file;

    }

}

其中的 file 成员变量对应 upload_form.jsp 表单中为 file 的 property 。

在 struts1 中,文件对象被封装成了 org.apache.struts.upload.FormFile 对象。





3 编写 action –UploadAction

继承 org.apache.struts.action.Action 类

public class UploadAction extends Action {

    Logger logger = Logger.getLogger (UploadAction. class );



    @Override

    public ActionForward execute(ActionMapping mapping, ActionForm form,

            HttpServletRequest request, HttpServletResponse response)

            throws Exception {



        // 将缓存表单数据的 form 强转成 UploadForm 类型,得到其中的 file 变量

        UploadForm uf = (UploadForm) form;

        FormFile ff = uf.getFile();



        // 输出 UploadForm 中的变量 file 的信息 - 文件名 - 文件大小

        logger .debug( "file name : " + ff.getFileName());

        logger .debug( "file size : " + ff.getFileSize());



        // 得到该文件的输入流

        InputStream is = ff.getInputStream();



        // 该文件要保存的路径 - 文件名 , “upload” 为 web-root 下的一文件夹名,

        // getServlet().getServletContext().getRealPath("upload") 得到 "upload" 文件夹在服务器端的相对位置

        // ff.getFileName() 为保存时的文件名

        File file = new File(getServlet().getServletContext().getRealPath(

                "upload" ), ff.getFileName());



        logger .debug(file.getPath());



        // 创建一个输出流

        BufferedOutputStream bos = new BufferedOutputStream(

                new FileOutputStream(file));



        // 从输入流中读取字节,通过输出流写入 file 文件中

        int b = -1;

        while ((b = is.read()) != -1) {

            bos.write(b);

        }

        bos.close();

        is.close();

        return mapping.findForward( "success" );

    }

}



4 编写配置文件 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 = "uploadForm" type = "zl.form.UploadForm" />

    </ form-beans >

    < action-mappings >

        < action path = "/upload" type = "zl.action.UploadAction" name = "uploadForm" >

        </ action >

    </ action-mappings >

</ struts-config >



其中 /upload 是 upload_form.jsp 提交到的地址相对应。



5 运行



运行成功, console 会打印所上传文件的 name size path 的值。

21:21:30,859 DEBUG UploadAction:33 - file name : Eclipse&#25253;&#34920;&#24037;&#20855;.bmp

21:21:30,859 DEBUG UploadAction:34 - file size : 1026198

21:21:30,859 DEBUG UploadAction:45 - D:\Program Files\tomcat6.0\webapps\test2\upload\Eclipse&#25253;&#34920;&#24037;&#20855;.bmp

分享到:
评论

相关推荐

    一个Struts1多文件上传实例(附Form中传List示例)

    本实例主要探讨如何在Struts1中实现多文件上传功能,并结合Form中传递List类型的数据,这对于理解MVC模式下的文件处理和数据传递有重要作用。我们将深入讨论以下几个关键知识点: 1. **Struts1框架基础**: Struts...

    struts1实现文件上传

    综上所述,Struts1中的文件上传功能实现涉及到多个核心组件和技术点的综合运用。开发者需要对Struts1框架有深入的理解,并熟练掌握相关API的使用方法。此外,在实际开发过程中还需要注意安全性问题,比如防止恶意...

    struts2实现文件上传下载

    1. **配置Struts2的文件上传** 在`struts.xml`配置文件中,为需要支持文件上传的Action添加`params`和`fileUpload`拦截器,并设置允许的最大上传大小。例如: ```xml ...

    Struts1实现文件上传源码

    1. **配置struts-config.xml**:在Struts1中,所有的动作配置都集中在`struts-config.xml`文件里。要实现文件上传,需要定义一个专门处理文件上传的Action,配置如下: ```xml ``` 2. **创建ActionForm*...

    struts1的文件上传

    本文将深入探讨Struts1中的文件上传,包括单文件上传、多文件上传,以及解决文件名乱码和重名冲突等问题。 1. **文件上传基础** 文件上传是Web应用中常见的一种功能,允许用户从本地电脑上传文件到服务器。在...

    Struts1实现的文件上传

    在这个“Struts1实现的文件上传”项目中,我们将深入探讨如何在Struts1框架下实现文件上传功能,并不涉及文件下载的部分。 首先,理解文件上传的基本流程是至关重要的。在Web应用中,用户通过HTML表单选择本地文件...

    struts框架-文件上传下载

    1. Struts1中的文件上传:在Struts1中,文件上传主要依赖于`commons-fileupload`和`commons-io`两个库。首先需要在`struts-config.xml`中配置`action`元素,启用流处理。然后在表单中使用`&lt;html:file&gt;`标签指定上传...

    struts实现的文件上传下载功能

    3. **Struts配置**:在`struts-config.xml`中配置对应的`&lt;action&gt;`元素,指定处理文件上传请求的`Action`类。 4. **Action类**:编写`Action`类,处理文件上传请求。这里需要使用第三方库如Apache Commons ...

    Struts2多个文件上传

    在Struts2中,文件上传功能是一个常用特性,尤其在处理用户提交的多个文件时。本文将详细讲解如何使用Struts2进行多个文件的上传,重点是使用List集合进行上传。 首先,要实现Struts2的文件上传,必须引入必要的...

    struts1上传文件带进度条

    在Struts1中实现文件上传功能,常常是Web开发中的一个常见需求。而“带进度条”的文件上传则更进一步,它能为用户提供更好的用户体验,让用户在上传大文件时能够看到实时的上传进度。 首先,我们来理解一下Struts1...

    struts1 文件上传 文件下载

    在Struts1中,文件上传和下载是常见的功能,尤其在处理用户交互和数据交换时非常有用。下面将详细介绍如何使用Struts1实现文件上传和下载,以及涉及到的关键知识点。 **一、文件上传** 1. **表单配置**:在HTML...

    struts1实现文件上传和下载

    在Struts1中,实现文件上传和下载功能是常见的需求,这对于处理用户提交的文件,如图片、文档等,至关重要。下面将详细解释如何在Struts1中实现这两个操作。 首先,我们关注文件上传。在Struts1中,文件上传主要...

    struts2文件上传下载源代码

    1. **配置Struts2 Action**:在`struts.xml`配置文件中,你需要定义一个Action,该Action负责处理文件上传请求。Action的类需要继承自`ActionSupport`,并覆盖`execute()`方法,以便处理上传的文件。 2. **设置...

    struts1和struts2分别实现文件上传下载功能

    首先,让我们了解一下Struts1中的文件上传功能。Struts1使用了`commons-fileupload`库来处理文件上传。你需要在ActionForm中定义一个`File`类型的属性,这个属性对应用户在表单中选择的文件。在配置文件中,你需要...

    struts2中文件上传过滤codeFilter

    在Struts2框架中,文件上传是一个常见的功能,它允许用户通过Web应用程序上传文件到服务器。`codeFilter`在此上下文中通常是指一个自定义过滤器,用于在文件上传过程中进行额外的安全检查或处理。这个过滤器可以防止...

    struts 单文件上传和多文件上传带进度条

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

    struts1实现的文件批量上传

    在Struts1中实现文件上传,我们需要考虑前端的HTML表单、ActionForm、Struts配置文件以及后台的Action处理。 首先,前端实现是通过一个支持多文件选择的HTML表单来完成的。表单需要设置`enctype="multipart/form-...

    Struts1 fileupload Struts1文件上传 源码下载

    Struts1的fileupload的文件上传

    struts1 实现文件上传下载

    在Struts1中实现文件上传和下载是常见的需求,这通常涉及到用户通过Web界面交互地上传文件到服务器,或者从服务器下载文件到本地计算机。 一、文件上传 1. **配置ActionForm**:首先,你需要创建一个继承自Struts...

    struts与hibernate实现文件的上传与动态下载

    这个配置决定了在文件上传过程中,临时文件的存储位置。 3. **文件存储路径**:在Action中,使用`&lt;param name="savePath"&gt;/upload&lt;/param&gt;`指定保存文件的最终路径。在实际项目中,需要在Web应用的根目录下创建一个...

Global site tag (gtag.js) - Google Analytics