`

struts 1 中服务器端限制文件上传的类型及扩展名

阅读更多
转载:
http://hi.baidu.com/javajavajava/blog
src下建个properties文件,放置允许上传的文件类型:
allowuploadfiletype.properties
gif=image/gif
jpg=image/jpg,image/jpeg,image/pjpeg
bmp=image/bmp
png=image/png
swf=application/x-shockwave-flash
doc=application/msword
txt=text/plain
xls=application/vnd.ms-excel
ppt=application/vnd.ms-powerpoint
pdf=application/pdf
exe=application/octet-stream

在BaseForm 里面写具体的验证方法:
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;

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

public class BaseForm extends ActionForm {

    private static Properties properties = new Properties();


    static{
        try {
            properties.load(BaseForm.class.getClassLoader().getResourceAsStream("allowuploadfiletype.properties"));
        } catch (IOException e) {
            e.printStackTrace();
        } 
    }
    
   
    /**
    * 获取文件扩展名
    * @param formfile
    * @return
    */
    public static String getExt(FormFile formfile) {
        return formfile.getFileName().substring(
                formfile.getFileName().lastIndexOf('.') + 1).toLowerCase();
    }

    /**
    * 验证上传文件是否属于图片/flash动画/word文件/exe文件/pdf文件/TxT文件/xls文件/ppt文件
    * 
    * @param formfile
    * @return
    */
    public static boolean validateFileType(FormFile formfile) {
        if (formfile != null && formfile.getFileSize() > 0) {
            String ext = getExt(formfile);
            List<String> allowType = new ArrayList<String>();
            for (Object key : properties.keySet()) {
                String value = (String) properties.get(key);
                String[] values = value.split(",");
                for (String v : values) {
                    allowType.add(v.trim());
                }
            }
            return allowType.contains(formfile.getContentType().toLowerCase())
                    && properties.keySet().contains(ext);
        }
        return true;
    }

}


分享到:
评论

相关推荐

    struts1实现文件上传

    2. **配置文件上传**:在`struts-config.xml`配置文件中指定允许上传的文件类型和大小限制。 3. **编写Action**:在Action类中处理文件上传的具体逻辑,包括文件的保存路径、文件名的生成等。 #### 文件处理逻辑...

    struts1.x多文件上传

    Struts1.x提供了处理多文件上传的功能,使得开发者可以方便地集成到自己的应用程序中。 在Struts1.x中实现多文件上传,主要涉及以下几个核心概念和步骤: 1. **表单设计**:首先,你需要创建一个HTML表单,包含`...

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

    这可以通过在Struts配置文件中指定最大上传大小,或者在处理文件上传的Action中添加代码来实现。 5. **处理上传过程**:在Struts1.2中,通常在ActionForm中定义一个FormFile类型的字段,用于接收上传的文件。然后在...

    struts框架写的文件上传下载系统

    此过程需要对文件大小、类型进行限制,以防止安全问题如DDoS攻击或恶意文件上传。 2. **文件存储**:服务器端通常会设定一个专门的文件存储目录,上传的文件会被保存在这里。为了管理文件,系统可能还会创建数据库...

    Struts2实现Uploadify多文件上传

    Struts2是一个强大的MVC...通过以上步骤,我们可以利用Struts2和Uploadify实现多文件上传功能,为用户提供友好的上传体验,同时确保服务器端能正确处理和存储上传的文件。在实际项目中,应根据具体需求进行定制和优化。

    Struts2 文件上传之文件类型 allowedTypes.txt

    在探讨Struts2框架中的文件上传功能时,一个重要的概念就是如何通过`allowedTypes`来限制上传文件的类型。这对于确保系统的安全性和提高用户体验至关重要。 #### 1. Struts2 文件上传概述 Struts2是一个基于Java的...

    Struts1.2 formfile实现批量上传

    例如,可以通过检查文件扩展名来限制只允许特定类型的文件上传,或者对上传文件进行扫描以检测潜在的病毒或恶意代码。 总结,Struts1.2使用FormFile实现批量上传涉及前端表单构建、后端ActionForm设计、服务器端...

    struts+hibernate文件上传

    7. **安全性考虑**:为了防止恶意文件上传,例如上传脚本文件,需要检查文件的扩展名,限制文件大小,并且在保存文件时,可以重命名文件以避免覆盖现有文件或执行恶意代码。 通过以上步骤,我们可以构建一个基于...

    完整struts2文件上传示例

    通过验证文件扩展名、检查文件类型,甚至使用白名单来限制可接受的文件类型。 7. **服务器端文件存储** 根据实际需求,你可以选择将文件存储在本地文件系统、数据库、云存储等。在上面的示例中,文件被保存到了...

    Struts2文件上传和下载教程

    ### Struts2文件上传与下载教程 #### 一、文件上传原理及实现 **1.1 基础概念** 文件上传是Web开发中的常见需求之一。在Struts2框架中,实现文件上传主要依赖于表单的`enctype`属性设置为`multipart/form-data`。...

    struts2 +jquey uploadify3.2 实现多文件上传,可预览、删除、排序

    9. **安全考虑**:文件上传时需要防止恶意文件,例如通过检查文件扩展名、内容类型等来避免上传可能含有病毒或脚本的文件。 10. **错误处理**:在上传过程中可能出现各种错误,如网络中断、文件过大等,因此需要有...

    struts2文件上传

    1. **配置文件**:在struts.xml中添加`defaultStack`拦截器栈,启用文件上传支持。 ```xml &lt;constant name="struts.multipart.maxSize" value="10485760"/&gt; &lt;package name="default" extends="struts-default"&gt; ...

    struts upload 包及源码

    在给定的"struts upload 包及源码"中,重点是Struts2的文件上传功能。这个功能允许用户通过Web表单上传文件到服务器,对于处理图像、文档和其他用户生成的内容至关重要。在描述中提到的"upload源码和jar包及io包"指...

    struts2文件的上传和下载

    1. **文件上传**:在Struts2中,文件上传主要依赖于`Apache Commons FileUpload`库。首先,你需要在`struts.xml`配置文件中添加相应的拦截器,如`params`和`fileUpload`。然后,创建一个Action类,其中包含用于接收...

    struts文件上传例子

    通过学习和理解这个例子,开发者可以掌握在Struts应用中实现文件上传的基本步骤,并在此基础上进行扩展和优化,例如添加文件类型检查、大小限制、错误处理等功能。同时,这个例子也展示了MVC模式在实际开发中的应用...

    多文件上传实例 多文件上传实例

    在IT行业中,文件上传是一项常见的功能,特别是在web应用中,用户可能需要上传各种类型的文件,如图片、文档、音频或视频。本实例是基于Struts1.3框架实现的多文件上传功能,它包含了文件类型检查,以确保上传的安全...

    Struts2 实现文件简单上传

    当用户提交表单时,服务器端的Servlet(通常是Struts2的Action)接收到请求。在Struts2中,我们可以使用`org.apache.struts2.interceptor.FileUploadInterceptor`拦截器来处理文件上传。为了启用这个拦截器,我们...

    struts2学习笔记黑马程序员

    - **配置文件**:在Struts2配置文件中指定扩展名为`json-default`的包,以启用JSON处理功能。 - **Action返回类型**:设置Action的结果类型为`json`,Struts2会自动将模型对象转化为JSON字符串。 **案例——商品...

    JAVA中的文件上传.pdf

    此外,你还可以在服务器端验证文件扩展名,防止上传非法文件。 完成文件上传后,可以返回文件的信息,例如文件名、大小等。如果上传的是图片,还可以动态生成缩略图并显示。为了确保文件名的唯一性,可以结合当前...

    Java源码的swfupload多文件上传 strut2demo

    为了保证安全性,我们还需要防范恶意文件上传,例如检查文件扩展名、MIME类型等,防止上传脚本文件导致安全问题。此外,还可以使用Content-Disposition头来确保文件名的安全性。 总结来说,这个“Java源码的...

Global site tag (gtag.js) - Google Analytics