`
coconut_zhang
  • 浏览: 543549 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

java servlet common-fileupload 实现的文件批量上传

 
阅读更多

结合前辈们的代码, 写了个用servlet 和 common-fileupload 组件实现的文件批量上传。

只是一个简单的框架,没有设置文件大小,类型等的限制,你可根据自己需要添加代码。

环境:tomcat 5

jdk 6 其实这些都关系不大了,只要你用的是现在主流的版本。

 

java代码:

servlet中 dopost方法部分

response.setContentType("text/html");
  response.setCharacterEncoding("UTF-8");
  String storePath=getServletContext().getRealPath("/uploadimg");
  PrintWriter out=response.getWriter();
  File uploadDir = new File(storePath);//得到该目录的文件对象
  if(!uploadDir.exists()){//判断该目录是否存在
            if(!uploadDir.mkdir()){//如果不存在就建立该目录
                out.print("无法创建该目录!");//如果建立失败,给出提示
                return;
            }
        }
  if(!ServletFileUpload.isMultipartContent(request)){//用 ServletFileUpload 类的静态方法 isMultipartContent 判断 request 是否是 multipart/form-data 类型
             out.print("只能 multipart/form-data 类型数据");
             return;
         }
  //创建 DiskFileItemFactory 对象
     DiskFileItemFactory factory = new DiskFileItemFactory();
     ServletFileUpload upload = new ServletFileUpload(factory);//创建 ServletFileUpload 对象,构造的时候传一个 DiskFileItemFactory 对象进去
     upload.setHeaderEncoding("UTF-8");//设置普通字段名称和文件字段的文件名所采用的字符集编码
     List list = null;
     try {
            list = upload.parseRequest(request);//解析 request 对象 得到一个包含 FileItem 对象的 list
            System.out.println("~~~~~~~~~~~~~~~~~~~~~~~"+list.size());
        } catch (FileUploadException e) {
            out.print("解析文件时出现问题:");
            e.printStackTrace();
            return;
        }
        Iterator it = list.iterator();//遍历list
        //防止批量上传图片 存储的名字相同
        int i=0;
        while(it.hasNext()){
            FileItem fi = (FileItem)it.next();//类型转换
            if(fi.isFormField()){//判断该 FileItem 对象是否是一个普通表单类型
                String name = fi.getFieldName();//得到普通表单类型的表单名
                String content = fi.getString("UTF-8");//用指定编码得到普通表单的值
                out.println(name+"->>:"+content+"<br>");
               // request.setAttribute(name, content);//把键值放入 request 对象
            }else{
              try{
                     String pathStr = fi.getName();//得到文件表单的值,就是用户本地的文件路径
                     //如果文件表单为空,则不处理
                     if(pathStr.trim().equals("")){
                         continue;
                     }
                     int start = pathStr.lastIndexOf("//");//得到文件名在路径中的位置
                     int end = pathStr.lastIndexOf(".");
                     String fileName = pathStr.substring(start + 1,end);//得到文件名
                     String extention = pathStr.substring(end);//获得后缀名包括“.”
                     String curTime=new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
                     String storeName=curTime+i+extention;//给出图片存放名字
                     File pathDest = new File( storePath , storeName );//创建上传上来的文件对象  由服务器上存放文件的路径 + 文件名 组成
                     fi.write(pathDest);//写文件
                     String name = fi.getFieldName();//得到文件表单的名称
                     request.setAttribute(name, fileName);//把表单名、文件名放入 request
                     out.println(fileName+"<br>");
                     out.print(storePath+"<br>");
                     out.println("storeName->>"+storeName+"<br>");
                     i++;
                 }catch(Exception e){
                     out.print("存储文件错误:");
                     e.printStackTrace();
                     return;
                 }
            }
        }

 

页面代码,用的是dom技术

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="content-type" content="text/html">
<title>locale photo</title>
<mce:script type="text/javascript"><!--
function AddMoreRow()
{

var oRow=event.srcElement.parentNode.parentNode;
var oTable=oRow.parentNode.parentNode;
var rowCount=oTable.rows.length;
oNewRow=oTable.insertRow(rowCount);
oNewRow.insertCell(0).innerHTML="名称*";
oNewRow.insertCell(1).innerHTML="<input type='text' name='Name' size='15 maxlength='50'>";
oNewRow.insertCell(2).innerHTML="文件路径*";
oNewRow.insertCell(3).innerHTML="<input type='file' name='FilePath' size='15' onKeyDown='DisabledKeyInput()' />";
oNewRow.insertCell(4).innerHTML="说明*";
oNewRow.insertCell(5).innerHTML="<input type='text' name='Description' size='45'>";
oRow.all("DelBtn").disabled=false;
oNewRow.all("DelBtn").disabled=false;
}
function DeleteMoreRow()
{
var oRow=event.srcElement.parentNode.parentNode;
var oTable=oRow.parentNode.parentNode;
var rowCount=oTable.rows.length;
if(oTable.rows.length>1)
{
oTable.deleteRow(rowCount-1);
if(oTable.rows.length==1)
{
oTable.all("DelBtn").disabled=true;
}
}
}
function DisabledKeyInput()
{
if(event.keyCode!=8&&event.keyCode!=46)
{
event.returnValue=false;
}
}
// --></mce:script>
</head>

<body topmargin="10">
<form action="../ClothesAddServlet" method="post" enctype ="multipart/form-data">
批量上传
<table id="t1">

<tr>

<td >名称*</td>
<td><input type="text" name="name" size="15" maxlength="50"></td>
<td >文件路径*</td>
<td><input type="file" name="FilePath" size="15" onKeyDown="DisabledKeyInput()" /></td>

<td >说明*</td>
<td><input type="text" name="Description" size="45"><input type="button" value="增加" onclick="AddMoreRow()"></td>

<td valign="bottom">&nbsp;
<input type="button" id="DelBtn" value="删除" disabled="disabled" onClick="DeleteMoreRow()">
</td>

</tr>

</table>
<table>
<tr align="center">
<td align="center">
<input type="submit" value="保存">&nbsp;&nbsp;<input type="reset" value="取消"></td>
</tr>
</table>
</form>
</body>
</html>

 

分享到:
评论

相关推荐

    java中common-fileupload 上传文件demo

    下面,我们将深入探讨如何使用`Commons FileUpload`库在Java中实现文件上传功能,并基于提供的"文件上传demo"进行分析。 首先,我们需要添加`Commons FileUpload`的依赖到我们的项目中。如果你使用的是Maven,可以...

    利用Common-fileupload封装的文件上传组件...附上源码.

    总的来说,利用`Common-fileupload`,开发者可以方便地在Java Web应用中实现文件上传功能。这个库提供了多部分解析器,可以处理大文件的分块上传,避免一次性加载整个文件到内存中。它还支持设置上传限制,防止恶意...

    java+servlet+commons-io-2.4.jar+commons-fileupload-1.3.jar实现文件的上传与下载

    在Java Web开发中,文件的上传与下载是常见的功能需求,尤其...通过以上步骤,你可以实现基于Java Servlet和Apache Commons库的文件上传与下载功能。理解并熟练掌握这些知识点,对于开发高效、稳定的Web应用至关重要。

    最全的common-FileUpload.jar包

    在Java开发中,上传文件是一项常见的任务,Apache Commons FileUpload库正是为此而设计的。这个"最全的common-FileUpload.jar包"包含了处理HTTP请求中的多部分数据,特别是文件上传的功能。它使得开发者能够方便地从...

    commons-fileupload-1.2.2

    commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-fileupload-1.2.2commons-...

    commons-fileupload实现文件上传下载

    ### Commons-FileUpload 实现文件上传下载 #### 知识点概述 Commons-FileUpload 是 Apache 提供的一个用于处理 HTTP 文件上传的组件。它基于 Servlet 规范,并且能够解析来自 `multipart/form-data` 编码类型的 ...

    使用Common-fileUpload 上传文件 读取文件内容

    在Java Web开发中,文件上传是一项常见的功能,`Commons-FileUpload` 是Apache Commons项目提供的一个用于处理HTTP请求中的多部分数据(通常为文件上传)的库。本篇文章将详细讲解如何使用`Commons-FileUpload`进行...

    开发工具 commons-fileupload-1.3.2

    开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2开发工具 commons-fileupload-1.3.2...

    commons-fileupload-1.3.3&commons-fileupload-1.3.3架包和代码.rar

    Apache Commons FileUpload是一个Java库,专门用于处理HTTP协议中的多部分文件上传请求。在Web应用程序中,它允许用户上传文件到服务器,这对于处理用户提交的图片、文档或其他类型的数据至关重要。 描述中提及的...

    使用commons-fileupload实现的文件上传和下载

    本教程将详细介绍如何利用commons-fileupload库来实现在Java Web应用中的文件上传和下载,并确保在整个过程中不会出现中文乱码问题。 1. **Apache Commons FileUpload简介** Apache Commons FileUpload是一个开源...

    Common-fileupload组件实现文件上传.pdf

    ### Common-fileupload组件实现文件上传 #### 一、概述 在现代Web开发中,文件上传是一项常见的需求。尤其是在Java Web应用程序中,实现文件上传功能变得越来越简单,这得益于丰富的开源库支持。Common-fileupload...

    common-io,common-fileupload.jar等jar包

    在Java开发中,`common...总之,`common-io`和`common-fileupload`是Java开发中的强大工具,它们简化了常见的I/O操作和文件上传处理,提高了开发效率。了解并熟练运用这些库,能帮助开发者更好地应对实际项目中的挑战。

    两篇网文:拦截器 Common-FileUpload

    在"Common-FileUpload实现文件上传.doc"文档中,可能会详细介绍如何利用这个库来处理用户的文件上传请求。Common-FileUpload提供了一套完整的API,用于解析请求中的多部分数据,从而提取上传的文件。使用它,开发者...

    commons-fileupload-1.3.3-API文档-中文版.zip

    标签:commons、fileupload、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心...

    commons-fileupload实现文件上传

    本篇将详细讲解如何使用Commons FileUpload来实现文件上传的功能。 首先,理解HTTP协议中的多部分数据是至关重要的。在HTML表单提交文件时,通常会使用`enctype="multipart/form-data"`属性,此时,数据会被分割成...

    struts1.2和commons-fileupload实现文件上传

    Struts1.2和Commons-Fileupload是Java Web开发中用于实现文件上传的两个重要组件。Struts1.2是Apache的一个开源框架,主要用于构建MVC(模型-视图-控制器)架构的Web应用程序,而Commons-Fileupload则是Apache ...

    common-fileupload api

    common-fileupload官方文档

    Common-FileUpload带进度条文件上传

    3. Common-FileUpload库:这个库可能是一个专门为实现带进度条文件上传功能而设计的开源组件。它可能包含JavaScript、CSS和HTML代码,用于构建用户界面,以及后端处理逻辑。使用此类库可以简化开发者的工作,避免从...

    commons-fileupload文件上传实例

    Apache Commons FileUpload是Java中处理文件上传的一个强大库,它简化了这一过程。本教程将详细介绍如何利用commons-fileupload实现文件上传功能,并提供一个简单的实例。 **一、Apache Commons FileUpload简介** ...

    commons-fileupload-1.4-API文档-中文版.zip

    标签:fileupload、commons、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心...

Global site tag (gtag.js) - Google Analytics