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

common-fileupload 实例

阅读更多

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包

    这个"最全的common-FileUpload.jar包"结合了两个关键的Apache Commons库,为开发者提供了强大的文件上传解决方案,无论是小型项目还是大型企业级应用,都能从中受益。通过深入理解和有效利用这些工具,可以极大地...

    common-fileupload实例:fileList = upload.parseRequest(request);上传file文件和form表单提交

    在这个实例中,我们将探讨如何使用`common-fileupload`库来处理文件上传,同时结合form表单数据的提交。 首先,让我们理解`fileList = upload.parseRequest(request);`这行代码在文件上传过程中的作用。`upload....

    commons-fileupload-1.3.3.jar commons-io-2.5.jar

    3. **创建解析器**:在Servlet的doPost方法中,创建一个`ServletFileUpload`实例,这是FileUpload库提供的解析器,它可以解析多部分请求。 4. **解析请求**:使用`ServletFileUpload.parseRequest()`方法解析HTTP...

    common-fileupload文件上传及下载

    在`MyProject`这个压缩包中,可能包含了使用`common-fileupload`进行文件上传和下载的示例代码,你可以解压后查看具体实现。通过阅读和理解代码,可以更好地掌握文件上传下载的实践应用。在实际开发中,结合源码和...

    java中common-fileupload 上传文件demo

    3. **创建FileUpload对象**:如果请求是多部分的,我们需要创建一个`DiskFileItemFactory`实例,它负责临时存储上传的文件。然后,使用`DiskFileItemFactory`创建一个`FileUpload`对象。 ```java ...

    common-fileupload

    2. **创建上传处理器**:在Servlet中,我们需要创建一个`ServletFileUpload`实例,它负责解析请求中的多部分数据。 ```java ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory()); ``` `...

    commons-fileupload-1.2.2.jar和commons-io-2.4.jar包

    例如,使用`DiskFileItemFactory`配置临时存储路径,创建`ServletFileUpload`实例来解析请求,再通过`FileItem`接口处理每个上传的文件。 总之,`commons-fileupload-1.2.2.jar`和`commons-io-2.4.jar`是Java Web...

    Common-FileUpload与struts2文件上传

    - 在Servlet中,你需要创建一个`ServletFileUpload`实例,并设置其最大文件大小、最大请求大小等参数。然后通过`parseRequest(request)`方法解析HTTP请求,获取`FileItem`对象,这些对象代表了上传的文件或普通表单...

    利用commons-fileupload组件实现文件上传-实例

    Apache Commons FileUpload组件是处理这种需求的一个强大工具。本文将详细介绍如何利用这个组件实现文件上传,并通过一个简单的实例来说明。 Apache Commons FileUpload组件是Apache Commons项目的一部分,它为...

    commons-fileupload的优化实用类

    1. **初始化FileUpload**: 在处理请求之前,`UploadForm`需要创建一个`ServletFileUpload`实例,设置内存阈值和临时文件存储路径,这样可以控制文件是否在内存中存储还是写入磁盘,以及临时文件的位置。 ```java ...

    使用commons-fileupload上传文件

    2. **添加依赖**:下载`commons-fileupload`的JAR包,例如`commons-fileupload-1.0-beta-1.jar`,并将它放入Tomcat的`lib`目录下,通常是`${TOMCAT}/common/lib`。此外,由于`commons-fileupload`依赖于`commons-...

    commons-fileupload.jar和commons-io.jar

    例如,你可以创建一个`DiskFileItemFactory`来配置临时存储设置,接着创建一个`ServletFileUpload`实例,用它来解析请求。解析后,你可以遍历`FileItem`对象,对于每个文件项,可以调用`write()`方法将其保存到...

    struts中使用Common-fileUpload.的几篇网络文章

    `DiskFileItemFactory`用于管理临时文件存储,而`ServletFileUpload`类负责解析请求并创建`FileItem`实例。 4. **处理上传文件** 在Action类中,可以通过`ServletFileUpload.parseRequest(request)`方法解析请求,...

    commons-fileupload文件上传组件中文教程--张孝祥写的

    ### Apache Commons FileUpload 组件详解 #### 一、概述 Apache Commons FileUpload 是一款非常实用且功能强大的文件上传组件,广泛应用于Java Web项目中。它极大地简化了原本复杂繁琐的文件上传过程,使得开发者...

    commons-fileupload文档及源代码.rar

    `common_fileupload详解.doc`文档应该提供了关于库的详细使用指南、API参考和示例代码。通过阅读文档,你可以快速掌握如何在项目中集成和使用`commons-fileupload`。 总的来说,Apache Commons FileUpload库极大地...

    JSP组件commons-fileupload实现文件上传

    本文实例为大家分享了JSP使用commons-fileupload实现文件上传代码,供大家参考,具体内容如下 1、准备: 将commons-fileupload-1.1.zip和commons-io-1.1.zip复制到”\WEB-INF\lib”目录下 2、首先是Servlet:...

    java使用common-fileupload实现文件上传

    `common-fileupload`处理文件上传,而`common-io`则提供了文件I/O操作的支持。 导入库后,我们可以通过以下步骤实现文件上传: 1. **创建DiskFileItemFactory实例**: `DiskFileItemFactory factory = new ...

    IOUtils(commons-io-1.4.jar、commons-fileupload-1.2.1.jar等等)

    - **DiskFileItemFactory**:工厂类,用于配置和创建`FileItem`实例。它可以控制临时文件的存储位置和大小限制。 - **ServletFileUpload**:这个类处理HTTP请求中的多部分表单数据,即文件上传。它可以解析请求并...

    Jsp文件上传下载(工具类源码)

    commons-fileupload-1.2.1实现文件上传 需导入commons-fileupload-1.2.1.jar和 commons-io-1.3.2.jar upload2.jsp *" pageEncoding="gb2312"%&gt; &lt;!DOCTYPE ...

    easyUi+jquery+common-file-upload +struts2带进度条的文件上传DEMO

    基于eclipse + easyUi1.2.6+common-fileupload + struts2实现带进度条的文件上传DEMO,具体效果跟思路可见我的博客:http://blog.csdn.net/jun55xiu/article/details/22042279

Global site tag (gtag.js) - Google Analytics