转载:
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;
}
}
分享到:
相关推荐
2. **配置文件上传**:在`struts-config.xml`配置文件中指定允许上传的文件类型和大小限制。 3. **编写Action**:在Action类中处理文件上传的具体逻辑,包括文件的保存路径、文件名的生成等。 #### 文件处理逻辑...
Struts1.x提供了处理多文件上传的功能,使得开发者可以方便地集成到自己的应用程序中。 在Struts1.x中实现多文件上传,主要涉及以下几个核心概念和步骤: 1. **表单设计**:首先,你需要创建一个HTML表单,包含`...
这可以通过在Struts配置文件中指定最大上传大小,或者在处理文件上传的Action中添加代码来实现。 5. **处理上传过程**:在Struts1.2中,通常在ActionForm中定义一个FormFile类型的字段,用于接收上传的文件。然后在...
此过程需要对文件大小、类型进行限制,以防止安全问题如DDoS攻击或恶意文件上传。 2. **文件存储**:服务器端通常会设定一个专门的文件存储目录,上传的文件会被保存在这里。为了管理文件,系统可能还会创建数据库...
Struts2是一个强大的MVC...通过以上步骤,我们可以利用Struts2和Uploadify实现多文件上传功能,为用户提供友好的上传体验,同时确保服务器端能正确处理和存储上传的文件。在实际项目中,应根据具体需求进行定制和优化。
在探讨Struts2框架中的文件上传功能时,一个重要的概念就是如何通过`allowedTypes`来限制上传文件的类型。这对于确保系统的安全性和提高用户体验至关重要。 #### 1. Struts2 文件上传概述 Struts2是一个基于Java的...
7. **安全性考虑**:为了防止恶意文件上传,例如上传脚本文件,需要检查文件的扩展名,限制文件大小,并且在保存文件时,可以重命名文件以避免覆盖现有文件或执行恶意代码。 通过以上步骤,我们可以构建一个基于...
通过验证文件扩展名、检查文件类型,甚至使用白名单来限制可接受的文件类型。 7. **服务器端文件存储** 根据实际需求,你可以选择将文件存储在本地文件系统、数据库、云存储等。在上面的示例中,文件被保存到了...
### Struts2文件上传与下载教程 #### 一、文件上传原理及实现 **1.1 基础概念** 文件上传是Web开发中的常见需求之一。在Struts2框架中,实现文件上传主要依赖于表单的`enctype`属性设置为`multipart/form-data`。...
9. **安全考虑**:文件上传时需要防止恶意文件,例如通过检查文件扩展名、内容类型等来避免上传可能含有病毒或脚本的文件。 10. **错误处理**:在上传过程中可能出现各种错误,如网络中断、文件过大等,因此需要有...
例如,可以通过检查文件扩展名来限制只允许特定类型的文件上传,或者对上传文件进行扫描以检测潜在的病毒或恶意代码。 总结,Struts1.2使用FormFile实现批量上传涉及前端表单构建、后端ActionForm设计、服务器端...
1. **配置文件**:在struts.xml中添加`defaultStack`拦截器栈,启用文件上传支持。 ```xml <constant name="struts.multipart.maxSize" value="10485760"/> <package name="default" extends="struts-default"> ...
在给定的"struts upload 包及源码"中,重点是Struts2的文件上传功能。这个功能允许用户通过Web表单上传文件到服务器,对于处理图像、文档和其他用户生成的内容至关重要。在描述中提到的"upload源码和jar包及io包"指...
1. **文件上传**:在Struts2中,文件上传主要依赖于`Apache Commons FileUpload`库。首先,你需要在`struts.xml`配置文件中添加相应的拦截器,如`params`和`fileUpload`。然后,创建一个Action类,其中包含用于接收...
通过学习和理解这个例子,开发者可以掌握在Struts应用中实现文件上传的基本步骤,并在此基础上进行扩展和优化,例如添加文件类型检查、大小限制、错误处理等功能。同时,这个例子也展示了MVC模式在实际开发中的应用...
在IT行业中,文件上传是一项常见的功能,特别是在web应用中,用户可能需要上传各种类型的文件,如图片、文档、音频或视频。本实例是基于Struts1.3框架实现的多文件上传功能,它包含了文件类型检查,以确保上传的安全...
当用户提交表单时,服务器端的Servlet(通常是Struts2的Action)接收到请求。在Struts2中,我们可以使用`org.apache.struts2.interceptor.FileUploadInterceptor`拦截器来处理文件上传。为了启用这个拦截器,我们...
- **配置文件**:在Struts2配置文件中指定扩展名为`json-default`的包,以启用JSON处理功能。 - **Action返回类型**:设置Action的结果类型为`json`,Struts2会自动将模型对象转化为JSON字符串。 **案例——商品...
此外,你还可以在服务器端验证文件扩展名,防止上传非法文件。 完成文件上传后,可以返回文件的信息,例如文件名、大小等。如果上传的是图片,还可以动态生成缩略图并显示。为了确保文件名的唯一性,可以结合当前...
为了保证安全性,我们还需要防范恶意文件上传,例如检查文件扩展名、MIME类型等,防止上传脚本文件导致安全问题。此外,还可以使用Content-Disposition头来确保文件名的安全性。 总结来说,这个“Java源码的...