Jquery使用插件实现多文件同时上传的功能
需要用到的相关jar包和第三方插件分别为:jquery-1.4.2.min.js,jquery.MultiFile.js,commons-io-1.4.jar,commons-fileupload-1.2.1.jar
引入相关的js和jar文件即可开始上传的操作:
//此处的上传没有判断文件上传的类型,因为使用了jquery的插件,所以此处的上传类型在前台的页面做控制
final long MAX_SIZE = 3 * 1024 * 1024;// 设置上传文件最大为 3M
response.setContentType("text/html");
// 设置字符编码为UTF-8, 这样支持汉字显示 
response.setCharacterEncoding("GBK");
// 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload 
DiskFileItemFactory dfif = new DiskFileItemFactory();
dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘 
dfif.setRepository(new File("c:\\"));// 设置存放临时文件的目录,web根目录下的ImagesUploadTemp目录 
// 用以上工厂实例化上传组件 
ServletFileUpload sfu = new ServletFileUpload(dfif);
// 设置最大上传尺寸 
sfu.setSizeMax(MAX_SIZE);
// 从request得到 所有 上传域的列表 
List fileList = null;
try {
  fileList = sfu.parseRequest(request);
} catch (FileUploadException e) {// 处理文件尺寸过大异常 
  if (e instanceof SizeLimitExceededException) {
    out.println("文件尺寸超过规定大小:" + MAX_SIZE + "字节<p />");
    out.println("<a href=\"upload.html\" target=\"_top\">返回</a>");
    return;
  }
  e.printStackTrace();
}
// 没有文件上传 
if (fileList == null || fileList.size() == 0) {
  out.println("请选择上传文件<p />");
如何访问webservice  out.println("<a href=\"upload_sence.jsp\" target=\"_top\">返回</a>");
  return;
}
// 得到所有上传的文件 
Iterator fileItr = fileList.iterator();
// 循环处理所有文件 
while (fileItr.hasNext()) {
  FileItem fileItem = null;
  String fpath = "";
  long size = 0;
  // 得到当前文件 
  fileItem = (FileItem) ();
  if (fileItem.isFormField()) {
                    //如果不是上传域,而是普通的表单域(如:<input type="text|radio">)则在此进行处理
  }
  // 忽略简单form字段而不是上传域的文件域(<input type="text" />等)
  if (fileItem == null || fileItem.isFormField()) {
    continue;
  }
  // 得到文件的完整路径 
  fpath = Name();
  // 得到文件的大小 
  size = Size();
  if ("".equals(fpath) || size == 0) {
    out.println("请选择上传文件<p />");
    out.println("<a href=\"upload_sence.jsp\" target=\"_top\">返回</a>");
    return;
  }
平面设计自学网
  // 得到去除路径的文件名 
  String t_name = fpath.substring(fpath.lastIndexOf("\\") + 1);
  // 得到文件的扩展名(无扩展名时将得到全名) 
  String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1);
    // 根据系统时间生成上传后保存的文件名 
  //String prefix = String.valueOf(now);
  // 保存的最终文件完整路径,保存在web根目录下的ImagesUploaded目录下 
  String u_name = RealPath("/") + "uploaded\\" + t_name
    + "." + t_ext;
  File file = new File(u_name);
word文本框透明
  fileItem.write(file);
  out.println("文件上传成功. 已保存为: " + t_name + "." + t_ext
    + "   文件大小: " + size + "字节<p />");
reverse for  out.println("<a href=\"upload_sence.jsp\" target=\"_top\">继续上传</a>");
}
PS:如果你上传文件时需要使用当前时间的毫秒数来做上传文件的文件名,那么请不要使用此种方式上传,因为该方式可以让用户通过一个文本域同时上传多个文件,而多个文件是同时进行上传操作的,所以在同一时间内最后一个上传的文件很可能会将前边的文件覆盖掉,造成文件的丢失

相应的上传页面代码如下:
<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/
TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>JQeury多文件上传测试</title>
<!--
引入jquery的主文件和上传的插件,注意下方蓝文件显示的地方,只有使用了jquery相关插件的时候才可以这样写,其中class="multi"指定了该域可以使用jquery插件特有的属性,accept="gif|jpg"表示允许的上传文件类型,多个类型之间用|进行分割。maxlength="3"指定了允许上传文件的最大个数
-->
<script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="../js/jquery.MultiFile.js"></script>
</head>
<body>
<form action="up_action.jsp" method="post" enctype="multipart/form-data">
  matlab中strcmp函数的用法<input name="jq" type="file" class="multi" accept="gif|jpg" maxlength="3"/>
  <br>
  <input type="submit" value="上传">
</form>jquery下载文件插件
</body>
</html>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。