common-fileupload是jakarta项目组开发的一个功能很强大的上传文件组件
下面先介绍上传文件到服务器(多文件上传):
import javax.servlet.*;
import javax.servlet.http.*;
import
java.io.*;
import java.util.*;
import java.util.regex.*;
import
org.apache.commons.fileupload.*;
public class upload extends HttpServlet {
private static final String
CONTENT_TYPE = "text/html; charset=GB2312";
//Process the HTTP Post
request
public void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter
out=response.getWriter();
try {
DiskFileUpload fu = new
DiskFileUpload();
//
设置允许用户上传文件大小,单位:字节,这里设为2m
fu.setSizeMax(2*1024*1024);
//
设置最多只允许在内存中存储的数据,单位:字节
fu.setSizeThreshold(4096);
//
设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
fu.setRepositoryPath("c:\\windows\\temp");
//开始读取上传信息
List
fileItems = fu.parseRequest(request);
// 依次处理每个上传的文件
Iterator iter =
fileItems.iterator();
//正则匹配,过滤路径取文件名
String regExp=".+\\\\(.+)$";
//过滤掉的文件类型
String[] errorType={".exe",".com",".cgi",".asp"};
Pattern
p = Pattern.compile(regExp);
while (iter.hasNext()) {
FileItem
item = (FileItem)iter.next();
//忽略其他不是文件域的所有表单信息
if
(!item.isFormField()) {
String name =
item.getName();
long size = item.getSize();
if((name==null||name.equals("")) && size==0)
continue;
Matcher m = p.matcher(name);
boolean result =
m.find();
if (result){
for (int
temp=0;temp<ERRORTYPE.LENGTH;TEMP++){
if
(m.group(1).endsWith(errorType[temp])){
throw new
IOException(name+": wrong type");
}
}
try{
//保存上传的文件到指定的目录
//在下文中上传文件至数据库时,将对这里改写
item.write(new File("d:\\" +
m.group(1)));
out.print(name+" "+size+"");
}
catch(Exception e){
out.println(e);
}
}
else
{
throw new IOException("fail
to upload");
}
}
}
}
catch (IOException
e){
out.println(e);
}
catch (FileUploadException e){
out.println(e);
}
}
}
现在介绍上传文件到服务器,下面只写出相关代码:
以sql2000为例,表结构如下:
字段名:name filecode
类型: varchar image
数据库插入代码为:PreparedStatement pstmt=conn.prepareStatement("insert into test
values(?,?)");
代码如下:
。。。。。。
try{
这段代码如果不去掉,将一同写入到服务器中
//item.write(new
File("d:\\" + m.group(1)));
int
byteread=0;
//读取输入流,也就是上传的文件内容
InputStream
inStream=item.getInputStream();
pstmt.setString(1,m.group(1));
pstmt.setBinaryStream(2,inStream,(int)size);
pstmt.executeUpdate();
inStream.close();
out.println(name+" "+size+" ");
}
。。。。。。
这样就实现了上传文件至数据库
分享到:
相关推荐
这个"最全的common-FileUpload.jar包"结合了两个关键的Apache Commons库,为开发者提供了强大的文件上传解决方案,无论是小型项目还是大型企业级应用,都能从中受益。通过深入理解和有效利用这些工具,可以极大地...
在这个实例中,我们将探讨如何使用`common-fileupload`库来处理文件上传,同时结合form表单数据的提交。 首先,让我们理解`fileList = upload.parseRequest(request);`这行代码在文件上传过程中的作用。`upload....
3. **创建解析器**:在Servlet的doPost方法中,创建一个`ServletFileUpload`实例,这是FileUpload库提供的解析器,它可以解析多部分请求。 4. **解析请求**:使用`ServletFileUpload.parseRequest()`方法解析HTTP...
在`MyProject`这个压缩包中,可能包含了使用`common-fileupload`进行文件上传和下载的示例代码,你可以解压后查看具体实现。通过阅读和理解代码,可以更好地掌握文件上传下载的实践应用。在实际开发中,结合源码和...
3. **创建FileUpload对象**:如果请求是多部分的,我们需要创建一个`DiskFileItemFactory`实例,它负责临时存储上传的文件。然后,使用`DiskFileItemFactory`创建一个`FileUpload`对象。 ```java ...
2. **创建上传处理器**:在Servlet中,我们需要创建一个`ServletFileUpload`实例,它负责解析请求中的多部分数据。 ```java ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory()); ``` `...
例如,使用`DiskFileItemFactory`配置临时存储路径,创建`ServletFileUpload`实例来解析请求,再通过`FileItem`接口处理每个上传的文件。 总之,`commons-fileupload-1.2.2.jar`和`commons-io-2.4.jar`是Java Web...
- 在Servlet中,你需要创建一个`ServletFileUpload`实例,并设置其最大文件大小、最大请求大小等参数。然后通过`parseRequest(request)`方法解析HTTP请求,获取`FileItem`对象,这些对象代表了上传的文件或普通表单...
Apache Commons FileUpload组件是处理这种需求的一个强大工具。本文将详细介绍如何利用这个组件实现文件上传,并通过一个简单的实例来说明。 Apache Commons FileUpload组件是Apache Commons项目的一部分,它为...
1. **初始化FileUpload**: 在处理请求之前,`UploadForm`需要创建一个`ServletFileUpload`实例,设置内存阈值和临时文件存储路径,这样可以控制文件是否在内存中存储还是写入磁盘,以及临时文件的位置。 ```java ...
2. **添加依赖**:下载`commons-fileupload`的JAR包,例如`commons-fileupload-1.0-beta-1.jar`,并将它放入Tomcat的`lib`目录下,通常是`${TOMCAT}/common/lib`。此外,由于`commons-fileupload`依赖于`commons-...
例如,你可以创建一个`DiskFileItemFactory`来配置临时存储设置,接着创建一个`ServletFileUpload`实例,用它来解析请求。解析后,你可以遍历`FileItem`对象,对于每个文件项,可以调用`write()`方法将其保存到...
`DiskFileItemFactory`用于管理临时文件存储,而`ServletFileUpload`类负责解析请求并创建`FileItem`实例。 4. **处理上传文件** 在Action类中,可以通过`ServletFileUpload.parseRequest(request)`方法解析请求,...
### Apache Commons FileUpload 组件详解 #### 一、概述 Apache Commons FileUpload 是一款非常实用且功能强大的文件上传组件,广泛应用于Java Web项目中。它极大地简化了原本复杂繁琐的文件上传过程,使得开发者...
`common_fileupload详解.doc`文档应该提供了关于库的详细使用指南、API参考和示例代码。通过阅读文档,你可以快速掌握如何在项目中集成和使用`commons-fileupload`。 总的来说,Apache Commons FileUpload库极大地...
本文实例为大家分享了JSP使用commons-fileupload实现文件上传代码,供大家参考,具体内容如下 1、准备: 将commons-fileupload-1.1.zip和commons-io-1.1.zip复制到”\WEB-INF\lib”目录下 2、首先是Servlet:...
`common-fileupload`处理文件上传,而`common-io`则提供了文件I/O操作的支持。 导入库后,我们可以通过以下步骤实现文件上传: 1. **创建DiskFileItemFactory实例**: `DiskFileItemFactory factory = new ...
- **DiskFileItemFactory**:工厂类,用于配置和创建`FileItem`实例。它可以控制临时文件的存储位置和大小限制。 - **ServletFileUpload**:这个类处理HTTP请求中的多部分表单数据,即文件上传。它可以解析请求并...
commons-fileupload-1.2.1实现文件上传 需导入commons-fileupload-1.2.1.jar和 commons-io-1.3.2.jar upload2.jsp *" pageEncoding="gb2312"%> <!DOCTYPE ...
基于eclipse + easyUi1.2.6+common-fileupload + struts2实现带进度条的文件上传DEMO,具体效果跟思路可见我的博客:http://blog.csdn.net/jun55xiu/article/details/22042279