`
mr.shang
  • 浏览: 39598 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts文件上传方法

阅读更多
UploadUitl.java

/**
* 这是一个辅助类,辅助完成上传功能。
* 可以选择将文件保存在数据库里或保存在文件系统上
* 并对文件的类型和大小进行了限制
*/
package com.hywavesoft.struts.commons;
import java.io.*;
public class UploadUtil {
    private static final String DATABASE_DEST = "database";
    private static final String FILE_DEST = "file";
    private static final int MAX_SIZE = 1024 * 1024;
private static final String[] TYPES = { ".jpg", ".gif", ".zip", ".rar" };

    public static void saveFile(String fileName, byte[] fileData, int size,
            String dest) throws FileNotFoundException, IOException {
        if (!checkSize(size)) {
            throw new IOException(size + " is too large !");
        }
        if (!checkType(fileName)) {
            throw new IOException("Unvaildate type !");
        }
        if (dest.equals(DATABASE_DEST)) {
            saveToDb(fileName, fileData);
        }
        if (dest.equals(FILE_DEST)) {
            saveToFile(fileName, fileData);
        }
    }

    private static void saveToDb(String fileName, byte[] fileData) {
    }

    private static void saveToFile(String fileName, byte[] fileData)
            throws FileNotFoundException, IOException {
        OutputStream o = new FileOutputStream(fileName);
        o.write(fileData);
        o.close();
    }

    public static void delFile(String fileName, String dest)
            throws NullPointerException, SecurityException {
        if (dest.equals(DATABASE_DEST)) {
            delFromDb(fileName);
        }
        if (dest.equals(FILE_DEST)) {
            delFromFile(fileName);
        }
    }

    private static void delFromDb(String fileName) {
    }

    private static void delFromFile(String fileName)
            throws NullPointerException, SecurityException {
        File file = new File(fileName);
        if (file.exists())
            file.delete();
    }

    private static boolean checkSize(int size) {
        if (size > MAX_SIZE)
            return false;
        return true;
    }

    private static boolean checkType(String fileName) {
        for (int i = 0; i < TYPES.length; i++) {
            if (fileName.toLowerCase().endsWith(TYPES[i])) {
                return true;
            }
        }
        return false;
    }

}




UploadAction.java

/**
* org.apache.struts.upload.FormFile是Struts处理文件上传的核心组件,提供了获得
* 上传文件元数据的方法。
*/
package com.hywavesoft.struts.upload;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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.hywavesoft.struts.commons.UploadUtil;

public class UploadAction extends BaseAction {
    public ActionForward execute(
        ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response) throws Exception {
        UploadForm uploadForm = (UploadForm) form;

        FormFile file = uploadForm.getTheFile();

        String contentType = file.getContentType();
        String fileName = file.getFileName();
        int fileSize = file.getFileSize();
        byte[] fileDate = file.getFileData();

        String command = request.getParameter("command");

        if (command.equals(SAVE)){
            UploadUtil.saveFile(getPath("fileUpload")+fileName
,fileDate,fileSize,FILE_DEST);
        }       
        if (command.equals(DELETE)){
            UploadUtil.delFile(fileName,FILE_DEST);
        }
        file.destroy();
        return mapping.findForward("success");
    }
}



BaseAction.java

package com.hywavesoft.struts.upload;
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;

public abstract class BaseAction extends Action {
    protected static final String SAVE = "save";
    protected static final String DELETE = "delete";
    protected static final String DATABASE_DEST = "database";
    protected static final String FILE_DEST = "file";
    public abstract ActionForward execute(
        ActionMapping mapping,
        ActionForm form,
        HttpServletRequest request,
        HttpServletResponse response) throws Exception;

    public String getPath(String filePath){
        String path = getServlet().getServletContext().getRealPath(filePath) + "\\";
        return path;
    }
}


UploadForm.java

package com.hywavesoft.struts.upload;
import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;

public class UploadForm extends ActionForm {
    private FormFile theFile;
    public FormFile getTheFile() {
        return theFile;
    }
    public void setTheFile(FormFile theFile) {
        this.theFile = theFile;
    }
}



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="com.hywavesoft.struts.upload.UploadForm" />

   </form-beans>

   <global-exceptions />
   <global-forwards />
   <action-mappings >
      <action
         attribute="uploadForm"
         input="/upload/upload.jsp"
         name="uploadForm"
         path="/upload"
         scope="request"
         type="com.hywavesoft.struts.upload.UploadAction">
         <forward name="success" path="/upload/success.jsp" />
      </action>

   </action-mappings>

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


分享到:
评论

相关推荐

    struts2文件上传下载源代码

    这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件到服务器。在Struts2中,这通常通过表单实现,表单包含一个`&lt;input type="file"&gt;`...

    struts2实现文件上传下载

    首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在Action类中声明一个`List&lt;FileInfo&gt;`类型的字段,用于接收上传的文件...

    struts2文件上传jar

    这个压缩包包含了实现Struts2文件上传所需的全部jar包,这些库文件对于理解和实现文件上传功能至关重要。 首先,我们要了解Struts2文件上传的基本流程。当用户通过表单提交包含文件输入字段的请求时,Struts2框架会...

    JavaEE Struts文件上传

    学习Struts2文件上传不仅需要掌握上述概念和技术,还需要了解文件安全性、异常处理和服务器配置等相关知识。在实际应用中,确保文件上传的健壮性和安全性是至关重要的,比如防止文件覆盖、大小限制、非法文件类型...

    Struts2多个文件上传

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

    struts2文件上传实例

    1. **.struts2配置**:在Struts2框架中,需要在`struts.xml`配置文件中添加相应的action配置,声明文件上传的处理方法。通常,你需要设置`&lt;result&gt;`类型为`stream`,以便处理上传的文件。 2. **Action类**:创建一...

    struts2文件上传的两种方法

    Struts2作为一款流行的Java Web框架,提供了丰富的功能来处理用户表单数据,其中包括文件上传。文件上传在现代Web应用中十分常见,如用户头像、文档分享等场景。Struts2提供了两种主要的文件上传方式:单文件上传和...

    struts2+jquery+ajax文件异步上传

    在文件上传场景中,Struts2主要负责接收前端发送的文件数据,并将这些数据存储到服务器的指定位置。配置Struts2的Action类和相应的XML配置文件,可以定义文件上传的处理逻辑。 接着,jQuery是一个高效、简洁的...

    struts2文件上传

    Struts2 文件上传是Web开发中的一个重要功能,它允许用户从他们的本地计算机向服务器传输文件。在Struts2框架中,文件上传是通过特定的拦截器实现的,这些拦截器处理了文件上传请求并提供了安全性和大小限制。下面将...

    struts2文件上传例子.rar

    在“struts2文件上传例子.rar”这个项目中,开发者已经使用Struts2.0框架实现了一个简单的文件上传功能。MyEclipse 6.6是一个集成开发环境,支持Java EE项目开发,可以直接导入该项目进行运行和调试。 首先,我们...

    Struts2之struts2文件上传详解案例struts011

    在这个"Struts2之struts2文件上传详解案例struts011"中,我们将深入探讨如何实现这一功能。 首先,我们需要了解Struts2中的Action类,它是处理用户请求的核心组件。为了支持文件上传,我们需要创建一个继承自`org....

    struts2 文件上传

    struts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileuploadstruts2 文件上传 struts2上传标签file fileupload

    Struts2文件上传源码

    本文将详细讲解Struts2文件上传的实现原理以及源码分析。 首先,理解文件上传的基本流程。当用户通过HTML表单选择文件并提交时,这些文件数据会被封装到HTTP请求中。Struts2框架提供了内置的支持来处理这样的请求,...

    struts2文件上传和下载

    在Struts2中,文件上传和下载是常见的功能需求,对于用户交互和数据交换至关重要。以下是对这些知识点的详细阐述: 1. **文件上传**: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它是一个Apache提供...

    简单易懂的struts2文件上传

    1. **Struts2文件上传概述** 在Struts2中,文件上传主要依赖于Apache的Commons FileUpload库。这个库提供了处理HTTP多部分请求(用于上传文件)的能力。首先,你需要在项目中引入对应的依赖,通常是Apache Commons ...

    struts2文件上传下载

    ### Struts2文件上传知识点 1. **Struts2的form标签配置** 在Struts2中进行文件上传时,必须在标签中指定`enctype="multipart/form-data"`,这样表单的数据才会以二进制流的形式发送,而不是默认的URL编码。在给定...

    Struts2文件上传程序示例

    Struts2文件上传程序是一个典型的企业级Web应用开发中的功能,它允许用户通过网页将本地文件上传到服务器。Struts2作为一款强大的MVC(Model-View-Controller)框架,提供了丰富的功能支持,包括文件上传。这个示例...

    struts2上传文件源代码

    在这个“struts2上传文件源代码”中,我们将深入探讨Struts2如何实现文件上传功能,以及涉及到的相关知识点。 首先,文件上传是Web应用中常见的功能,它允许用户从本地计算机选择文件并将其发送到服务器。在Struts2...

Global site tag (gtag.js) - Google Analytics