`
java_mike
  • 浏览: 85275 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

上传文件类型验证工具类

阅读更多
1、定义合法文件类型的配置文件  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


2、验证工具类(从配置文件中读取可上传文件类型)
package cn.changtusoft.publicplatform.web.forms;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.Set;

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

public class Utils {

	/**
	 * 存放可上传文件,从配置文件中读取
	 * 
	 * 采用单例模式,只在类加载的时候读取一次,提高性能
	 */
	private static Properties pros = new Properties();
	static {
		try {
			pros.load(BaseActionForm.class.getClassLoader().getResourceAsStream("allowuploadfiletype.properties"));
		} catch (IOException e) {
			System.out.println("读取定义允许上传文件的配置文件失败!!!");
			e.printStackTrace();
		}
	}
	
	
	/**
	 * 验证允许上传文件类型
	 * 
	 * @param formfile
	 * @return
	 */
	public boolean validateFileType(FormFile formfile) {
		if(formfile!=null && formfile.getFileSize()>0){
			
			// 用来保存合法文件类型
			List<String> allowType = new ArrayList<String>();
			Set keySet = pros.keySet();
			Iterator ite = keySet.iterator();
			while (ite.hasNext()) {
				String key = (String)ite.next();
				String values = pros.getProperty(key);
				// 转换为数组,类型
				String[] valueArray = values.split(",");
				for (String v : valueArray) {
					allowType.add(v);
				}
			}
			
			// 文件后缀名
			String ext = getFileExt(formfile);
			
			// 既判断文件的类型,也判断文件的后缀名,确保安全性
			return allowType.contains(formfile.getContentType().toLowerCase()) && pros.keySet().contains(ext);	
		}
		return false;
	}
	
	/**
	 * 验证上传图片格式是否合法
	 * 
	 * @param formfile
	 * @return
	 */
	public boolean validateImageFileType(FormFile formfile) {
		if(formfile!=null && formfile.getFileSize()>0){
			List<String> arrowType = Arrays.asList("image/bmp","image/png","image/gif","image/jpg","image/jpeg","image/pjpeg");
			return arrowType.contains(formfile.getContentType().toLowerCase());
		}
		
		return false;
	}
	
	/**
	 * 获取文件后缀名
	 * 
	 * 如:abc.gif  ===> gif
	 * 
	 * @param formFile
	 * @return
	 */
	public String getFileExt(FormFile formFile) {
		if (formFile != null) {
			String fileName = formFile.getFileName();
			return fileName.substring(fileName.lastIndexOf(".")+1);
		}
		return null;
	}
	
}


1
0
分享到:
评论
1 楼 nao000 2011-09-09  
感谢您的帖子带给的帮助。

相关推荐

    java验证文件真实格式和编码格式工具类

    `java验证文件真实格式和编码格式工具类` 提供的功能对于处理不同来源的文件至关重要,尤其是在处理用户上传的文件或跨平台数据交换时。通过`VerifyFileType.java` 和 `VerifyFileEncoder.java`,开发者可以确保正确...

    java文件上传下载工具类

    此外,工具类还可以包含其他辅助方法,如验证文件大小、检查文件类型的安全性、提供进度回调等,以增强文件操作的灵活性和安全性。同时,为了防止文件覆盖或路径遍历攻击,工具类需要对保存和读取的文件路径进行严格...

    上传文件工具类

    这个"上传文件工具类"显然提供了处理文件上传的功能,可能包括了文件的读取、验证、编码转换、异常处理等多个方面。下面我们将深入探讨这个主题,以及相关的关键知识点。 首先,`UploadFileUtils.java`很可能包含了...

    PHP上传视频文件图片工具类

    在批量上传方面,工具类需要能够处理多个文件,循环遍历`$_FILES`数组中的所有部分,对每个文件进行独立的处理。这通常涉及异步上传和进度条显示,以便提升用户体验。 返回JSON数据则是为了让前端能够获取到上传...

    JavaWeb中文件上传最强工具类

    这个过程可能包括文件重命名、大小检查、类型验证等步骤,以确保上传的安全性和有效性。 对于Excel2007的处理,工具类可能使用Apache POI库。POI是Apache软件基金会的一个开源项目,专门用来处理Microsoft Office...

    socket实现上传文件工具类

    本篇文章将详细探讨如何利用Socket实现一个强大的文件上传工具类,以及涉及到的相关知识点。 一、Socket基础知识 Socket,也被称为套接字,是网络通信中的一个抽象概念,它代表了两台机器间通信的一个端点。在Java...

    安卓文件下载上传解压相关-工具类支持多线程断点下载.rar

    这个压缩包"安卓文件下载上传解压相关-工具类支持多线程断点下载.rar"包含了一个工具类,旨在帮助开发者处理这些操作。下面将详细讨论相关知识点。 1. 多线程下载: 在Android中,为了提高文件下载速度,通常会采用...

    上传文件验证表单

    在“上传文件验证表单”中,表单验证是一个关键部分,它确保用户提交的数据满足预设的规则,例如文件类型、大小等限制。表单验证可以发生在客户端(JavaScript)和服务器端,以提供双重保障。在客户端,验证通常实时...

    图片、文件上传、数据库连接工具类

    在给定的"图片、文件上传、数据库连接工具类"压缩包中,很可能包含了实现这些功能的Java类。这些类可能包含文件上传的控制器、数据库连接池配置、事务管理逻辑以及对JDBC的封装。通过阅读和理解这些代码,开发者可以...

    ftp上传下载工具类

    FTP上传下载工具类通常是指一个编程接口或代码库,为开发者提供便捷的FTP客户端功能,包括连接到FTP服务器、上传文件、下载文件以及管理远程目录等操作。 在开发中,我们可能遇到以下关键知识点: 1. FTP基本概念...

    c#判断上传文件的类型和大小

    在C#中,判断上传文件的类型和大小是网络应用开发中的常见需求,尤其是在处理用户上传文件的功能时。为了确保安全性和性能,开发者通常需要验证文件的类型和大小,防止恶意大文件耗尽服务器资源,或者非法文件类型...

    C#工具类库类库 包含所有的常用工具类

    这些工具类涵盖了从文件操作到网络通信的多个领域。 首先,FTP操作类是用于与FTP服务器进行交互的组件。它可能包含连接、上传、下载文件以及目录管理等方法。例如,`FtpClient`类可以用来建立FTP连接,`UploadFile`...

    java 文件上传工具类 文件及文本数据

    以上是关于Java文件上传工具类处理文件及文本数据的主要知识点。理解并熟练掌握这些概念,可以帮助开发者创建高效、安全的文件上传系统。在实际开发中,还需要根据具体需求和项目规范来定制和扩展这些基础功能。

    七牛云上传需要的工具类

    标题中的“七牛云上传需要的工具类”指的是一个专门为七牛云服务设计的Java库或者代码模块,用于简化文件上传的操作。 首先,七牛云提供了官方SDK,包括Java版,它包含了上传、管理文件、获取访问链接等一系列功能...

    javaweb项目常用工具包

    Base64工具类-字符编码工具类-数据类型转换-日期工具类-Escape中文...MD5编码工具类- MD5加密 生成32位md5码-数字工具类-随机数工具类-反射工具类-字符串处理工具类-URL工具类-UUID-常用的数据验证工具类-XML工具类-

    java版ftp上传下载工具类

    Java版FTP上传下载工具类简化了与FTP服务器交互的过程,通过封装相关操作,使得开发者可以便捷地进行文件的上传和下载任务。 `FtpUtil.java` 文件是这个工具类的核心,它通常会包含以下关键组件: 1. **连接设置**...

    uploadify上传及后台文件合法性验证的代码解析

    更严格的文件验证可能包括文件头信息的检查,以及使用专门的库来识别文件内容。 本文中提供的代码示例为需要使用uploadify进行文件上传的开发人员提供了一个非常实用的参考。通过结合这些代码和技术,可以较为轻松...

    http请求提交类工具类

    6. 主测试方法:描述中提到可以使用main方法直接测试,这意味着工具类提供了一个主函数入口,允许开发者输入URL和其他参数,直接运行并查看请求结果,方便调试和验证。 7. 使用示例:调用此类工具时,开发者可能...

    SpringMVC可以用的工具类

    4. **验证工具类**:`ValidatorUtil`可以验证输入数据的有效性,比如邮箱格式、手机号码格式等,确保数据的质量。 5. **HTTP请求工具类**:在处理HTTP请求时,`HttpRequestUtil`可以帮助获取请求参数、请求头、...

    java操作sftp的工具类(JSch)

    这个工具类提供了上传文件的功能,可以根据需要扩展其他功能,如下载文件、删除文件、创建目录等。通过调用`SftpUtil.uploadFile()`方法,可以轻松地实现SFTP文件上传。 总之,JSch库为Java开发者提供了一个强大的...

Global site tag (gtag.js) - Google Analytics