`
fydddasas
  • 浏览: 40015 次
  • 性别: Icon_minigender_1
  • 来自: 海南
社区版块
存档分类
最新评论

三种文件上传组件代码

阅读更多
三种文件上传组件代码.

 commons-fileupload上传组件: 
(此组件还需要commons-io.jar)

public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  request.setCharacterEncoding("utf-8");
  response.setContentType("text/html;charset=utf-8");
  
  //上传文件工厂实例
  DiskFileItemFactory fileFactory = new DiskFileItemFactory();
  //上传文件存储路径
  String path = request.getSession().getServletContext().getRealPath("/") + "upload\\";
  //创建文件存放的仓库
  fileFactory.setRepository(new File(path));
  //设置缓存的大小(20M)
  fileFactory.setSizeThreshold(1024*1024*20);
  //用上传工厂实例创建上传文件对象
  ServletFileUpload fileUpload = new ServletFileUpload(fileFactory);
  fileUpload.setSizeMax(1024*1024*30);
  //fileUpload.setFileSizeMax(1024*1024*10);  //这句应该是设置单个文件大小的意思,但加上这句会失败. 
  //处理页面穿入的表单项
  List items = null;
  try {
   items = fileUpload.parseRequest(request);
  } catch (SizeLimitExceededException e) {
   request.setAttribute("errorInfo","上传文件超出30M");
   request.getRequestDispatcher("jsp/error.jsp").forward(request, response);
   return;
  } catch (FileUploadException e) {
   e.printStackTrace();
   request.setAttribute("errorInfo","上传出错");
   request.getRequestDispatcher("jsp/error.jsp").forward(request, response);
   return;
  }
  
  //遍历所有表单项
  for (int i = 0; i < items.size(); i++) {
   FileItem item = (FileItem)items.get(i);
   if ("".equals(item.getName())){//表示没有文件,这里暂时是通过文件名是否为空来判断是否有上传的文件的
    continue;
   }
   
   //如果这个表单是个普通表单域
   if (item.isFormField()){
    String name = item.getFieldName();
    String value = item.getString("utf-8");
    //将表单名和表单值传给页面
    request.setAttribute("name", name);
    request.setAttribute("value", value);
   } 
   //如果是文件域
   else {
    //获取文件域的表单域名
    String fieldName = item.getFieldName();
    //获取文件名
    String fileName = item.getName();
    //获取文件类型
    String contentType = item.getContentType();
    //对于上传文件的存放地址来建立一个输出流
    String newName = path + 
        (fileName.lastIndexOf(".") < 0 ? 
         fileName.substring(0, fileName.length()) : 
         System.currentTimeMillis() + fileName.substring(fileName.indexOf("."), fileName.length()));
    
    //判断上传文件是否在缓存之中
//这句可能表示上传的文件是否正在缓存向硬盘写入的过程中,但如果加上这句,会上传失败,不知为何...
//    if (item.isInMemory()){
     FileOutputStream output = new FileOutputStream(newName);
     InputStream input = item.getInputStream();
     byte[] buffer = new byte[1024];
     int len;
     while( (len = input.read(buffer)) > 0 ){
      output.write(buffer, 0, len);
     }
     input.close();
     output.flush();
     output.close();
//    }

    request.setAttribute("fieldName",fieldName);
    request.setAttribute("fileName",fileName);
    request.setAttribute("contentType",contentType);
   }
  }
  request.getRequestDispatcher("jsp/uploadResult.jsp").forward(request, response);
 }

 

COS上传组件:
public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  request.setCharacterEncoding("utf-8");
  response.setContentType("text/html;charset=utf-8");
  
  //上传文件存储路径
  String path = request.getSession().getServletContext().getRealPath("/") + "upload\\";
  
  //设置上传文件最大限度
  MultipartParser mp = null;
  try {
   mp = new MultipartParser(request,1024*1024*10*2);
  } catch (Exception e) {
   request.setAttribute("errorInfo","上传文件失败");
   request.getRequestDispatcher("jsp/error.jsp").forward(request, response);
   return;
  }
  
  //代表一个file
  Part part = null;
  while((part = mp.readNextPart()) != null){
   //获取表单名
   String fieldName = part.getName();
   //如果是文件域
   if (part.isFile()){
    //取得上传的该文件
    FilePart filePart = (FilePart)part;
    String fileName = filePart.getFileName();
    if (fileName != null && !"".equals(fileName)){
     long size = filePart.writeTo(new File(path));//将文件写入硬盘
     
     request.setAttribute("fieldName",fieldName);
     request.setAttribute("fileName",fileName);
     request.setAttribute("contentType",filePart.getContentType());
    }
    //表示没有文件
    else {
     System.out.println("没有文件");
    }
   }
  }
  request.getRequestDispatcher("jsp/uploadResult.jsp").forward(request, response);
 }

 

SmartUpload组件:
public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  request.setCharacterEncoding("utf-8");
  response.setContentType("text/html;charset=utf-8");
  
  //上传文件存储路径
  String path = request.getSession().getServletContext().getRealPath("/") + "upload\\";
  
  SmartUpload smtUpload = new SmartUpload();
  smtUpload.setForcePhysicalPath(true);
  smtUpload.initialize(this.getServletConfig(), request, response);
  
  //设置上传的每个文件的大小(10M) //这个能限制单个文件的大小
  smtUpload.setMaxFileSize(1024*1024*10);
  //设置上传的所有文件总大小(30M)
  smtUpload.setTotalMaxFileSize(1024*1024*10*3);
  //设置允许上传文件的格式
  smtUpload.setAllowedFilesList("jpg,gif,png,jpeg,bmp,JPG,GIF,PNG,JPEG,BMP,zip,rar,exe");
  
//  try {
//   //或者设定禁止上传的文件(通过扩展名限制),禁止上传带有exe,bat,jsp,htm,html,js扩展名的文件和没有扩展名的文件。
//   smtUpload.setDeniedFilesList("exe,bat,jsp,htm,html,js,,");
//  } catch (Exception e) {
//   e.printStackTrace();
//   request.setAttribute("errorInfo","禁止上传exe,bat,jsp,htm,html,js类型和空类型的文件");
//   request.getRequestDispatcher("jsp/error.jsp").forward(request,response);
//   return;
//  }
  try {
   smtUpload.upload(); //文件类型错误,文件大小错误的异常都是在这抛出的.
  } catch (Exception e){
   e.printStackTrace();
   request.setAttribute("errorInfo","文件上传错误,请检查上传的文件类型和大小");
   request.getRequestDispatcher("jsp/error.jsp").forward(request,response);
   return;
  }
  
  String fileName = "",fieldName="",contentType="";
  //上传文件
   for (int i = 0; i < smtUpload.getFiles().getCount(); i++) {
    com.jspsmart.upload.File file = smtUpload.getFiles().getFile(i);
    
    //如果该文件不为空
    if (!file.isMissing()) {
     fieldName = file.getFieldName();
     contentType=file.getContentType();
     try {
      fileName = file.getFileName();
       String suffix = fileName.substring(fileName.lastIndexOf("."),fileName.length());
      String newFileName = System.currentTimeMillis() + suffix;//产生新的文件名
      System.out.println(path+newFileName);
      //保存文件
      file.saveAs(path + newFileName);
    } catch (Exception e) {
     e.printStackTrace();
     request.setAttribute("errorInfo","文件上传错误,请检查上传的文件类型");
     request.getRequestDispatcher("jsp/error.jsp").forward(request,response);
     return;
    }
    }
   }
   request.setAttribute("fieldName",fieldName);
  request.setAttribute("fileName",fileName);
  request.setAttribute("contentType",contentType);
   request.getRequestDispatcher("jsp/uploadResult.jsp").forward(request, response);
 }

 

upload.jsp:
<form action="<%=basePath %>/xxx.do" enctype="multipart/form-data" method="post">
   上传文件:

   <input type="file" name="Upload1" contenteditable="false" />
   


   <input type="file" name="Upload2" contenteditable="false" />
   


   <input type="file" name="Upload3" contenteditable="false" />
   


   <input type="submit" value="上传" />
  </form>
分享到:
评论

相关推荐

    功能强大的文件上传组件

    【标题】"功能强大的文件上传组件"涉及到的核心技术是HTML5中的文件上传API,这是一个现代Web应用中不可或缺的功能,尤其在交互丰富的网站和应用程序中。HTML5的File API提供了更灵活、更强大的文件处理能力,使得...

    大文件上传组件

    在IT行业中,大文件上传组件是一个非常重要的工具,特别是在web应用程序和云计算环境中。它解决了由于文件大小限制导致的传统上传方式的不便,使用户能够方便地上传GB级别的大型文件。本篇将围绕大文件上传组件这一...

    一个简单实用的ASP文件上传组件

    ASP文件上传组件是一种在Web应用中处理用户上传文件的关键技术,尤其对于动态网站而言,它允许用户方便地将数据文件(如文档、图片、音频、视频等)上传至服务器。在本例中,"AN-Upload"是这样一个组件,它采用ASP...

    网上下载的ASP文件上传组件

    ASP文件上传组件是一种在Web应用中用于用户向服务器上传文件的技术解决方案。该组件基于经典的ASP(Active Server Pages)脚本语言,并结合了Flash技术,以实现文件上传功能。ASP是微软开发的一种服务器端脚本环境,...

    asp.net 多文件上传组件

    "asp.net 多文件上传组件"是为了解决这个问题而设计的一种解决方案。这类组件通常提供了一种方便、高效且用户友好的方式来批量处理文件上传。 首先,我们要理解ASP.NET中的文件上传机制。在ASP.NET中,文件上传是...

    asp文件上传组件 asp无组上传文件 简单实用突破限制

    ASP文件上传组件是一种在Web应用中用于处理用户上传文件的技术,尤其适用于ASP(Active Server Pages)环境。在ASP中,由于其内置的功能有限,通常需要借助第三方组件来实现文件上传功能。"asp文件上传组件 asp无组...

    ASP.NET 大文件上传组件

    ASP.NET大文件上传组件是为了解决在ASP.NET应用程序中处理大文件上传的问题而设计的。在传统的ASP.NET环境中,由于HTTP协议的限制,单个请求的大小通常被限制在4MB左右,这对于处理大文件(如高清视频、大型文档等)...

    js 多文件上传 组件

    在这个场景中,"js 多文件上传组件"是指一种能够允许用户一次性选择并上传多个文件的前端解决方案。 多文件上传组件的实现主要包括以下几个关键点: 1. **HTML5 File API**:HTML5引入了File API,使得JavaScript...

    多文件上传组件_Flash+ASP实现多文件上传功能

    总的来说,Flash+ASP的多文件上传组件提供了一种在早期Web应用程序中实现批量文件上传的有效解决方案。尽管现代Web技术如HTML5已经提供了更原生的文件上传支持,但这个组合对于那些仍依赖Flash的旧系统来说仍然具有...

    jsp 文件 上传 组件

    总结,JSP文件上传组件通常涉及JSP页面设计、Servlet处理以及第三方库如Apache Commons FileUpload的使用。理解这些知识点,开发者就能构建出健壮且安全的文件上传功能。在实际应用中,务必注意文件上传的安全性,...

    ASP 文件上传代码(aspupload组件)

    aspupload是InetPUB公司开发的一款ASP文件上传组件,它提供了一整套接口和方法,用于在ASP页面中实现文件上传。该组件支持HTTP和HTTPS协议,兼容各种浏览器,包括IE、Firefox、Chrome等,并且能够处理大文件上传,...

    bootstrap 文件上传组件 fileinput 实现文件批量上传

    Bootstrap文件上传组件FileInput是一款强大的前端文件上传工具,尤其适合于需要实现文件批量上传的场景。这个组件基于Bootstrap框架,提供了美观的用户界面和丰富的功能,使得文件上传操作变得直观且易于实现。以下...

    Vuejs的文件上传组件

    为了简化这些功能,可以考虑使用第三方库,如vue-dropzone、vue-uploader等,它们提供了丰富的配置选项和事件机制,能帮助你快速构建功能完善的文件上传组件。 总结,Vue.js的文件上传组件涉及到HTML5的文件API、...

    文件无组件上传,asp无组件上传代码

    总结来说,这个ASP无组件上传代码实例提供了一种不依赖任何第三方组件实现文件上传的方法,它包括文件保存、数据库记录以及必要的权限设置。对于那些不希望引入额外组件或者对组件有兼容性限制的ASP环境,这种方法是...

    Ext2.0 文件上传组件

    "Ext2.0 文件上传组件"是一个用于Web应用程序的组件,它允许用户在浏览器中方便地上传文件。这个组件基于Ext JavaScript库的2.0版本,Ext是一个强大的前端开发框架,提供了丰富的用户界面组件和数据管理功能。在本文...

    ntsky文件上传组件

    ntsky文件上传组件是一款在IT领域中用于网页或应用程序实现文件上传功能的专业工具。它能够帮助开发者轻松地集成文件上传功能,使得用户可以方便快捷地将本地文件上传到服务器。这款组件通常支持多种文件类型,并且...

    asp文件上传组件(我曾经用过的很好用)

    ASP文件上传组件是一种在Web应用中用于接收用户上传文件的技术,尤其在ASP(Active Server Pages)环境下非常常见。ASP是微软开发的一种服务器端脚本环境,用于生成动态网页。在这个场景下,文件上传组件通常是一个...

    无组件上传文件代码asp源代码

    在描述中提到的“纯asp代码”,意味着这个源代码没有使用任何第三方组件或控件,完全依赖ASP内置的功能来完成文件上传。在ASP中,实现文件上传的关键在于处理HTTP请求中的multipart/form-data数据类型,这是HTML表单...

    无组件上传代码

    【无组件上传代码】是一种实现文件上传功能的技术方案,它不需要依赖特定的组件或插件,而是通过HTML5等现代浏览器技术来完成。这个技术在Web应用中非常常见,允许用户方便地上传文件到服务器,比如图片、文档等各种...

Global site tag (gtag.js) - Google Analytics