一 使用apache-fileupload处理文件上传

框架:是指将用户经常处理的业务进行一个代码封装。让用户可以方便的调用。

目前文件上传的(框架)组件:

Apache----fileupload -

Orialiy – COS – 2008() -

Jsp-smart-upload – 200M。

用fileupload上传文件:

需要导入第三方包:

Apache-fileupload.jar – 文件上传核心包。

Apache-commons-io.jar – 这个包是fileupload的依赖包。同时又是一个工具包。

核心类:

DiskFileItemFactory – 设置磁盘空间,保存临时文件。只是一个具类。

ServletFileUpload  - 文件上传的核心类,此类接收request,并解析reqeust。

servletfileUpload.parseRequest(requdest)  - List<FileItem>

第一步:导入包

第二步:书写一个servlet完成doPost方法

/**

 * DiskFileItemFactory构造的两个参数

 * 第一个参数:sizeThreadHold - 设置缓存(内存)保存多少字节数据,默认为10K

 *            如果一个文件没有大于10K,则直接使用内存直接保存成文件就可以了。

 *          如果一个文件大于10K,就需要将文件先保存到临时目录中去。

 * 第二个参数 File 是指临时目录位置

 *

 */

public class Up2Servlet extends HttpServlet {

    public void doPost(HttpServletRequest req, HttpServletResponse resp)

           throws ServletException, IOException {

       req.setCharacterEncoding("UTf-8");

       //获取项目的路径

       String path = getServletContext().getRealPath("/up");

       //第一步声明diskfileitemfactory工厂类,用于在指的磁盘上设置一个临时目录

       DiskFileItemFactory disk =

              new DiskFileItemFactory(*,new File("d:/a"));

       //第二步:声明ServletFileUpoload,接收上面的临时目录

       ServletFileUpload up = new ServletFileUpload(disk);

       //第三步:解析request

       try {

           List<FileItem> list =  up.parseRequest(req);

           //如果就一个文件

           FileItem file = list.get();

           //获取文件名,带路径

           String fileName = file.getName();

           fileName = fileName.substring(fileName.lastIndexOf("\\")+);

           //获取文件的类型

           String fileType = file.getContentType();

           //获取文件的字节码

           InputStream in = file.getInputStream();

           //声明输出字节流

           OutputStream out = new FileOutputStream(path+"/"+fileName);

           //文件copy

           byte[] b = new byte[];

           int len = ;

           while((len=in.read(b))!=-){

              out.write(b,,len);

           }

           out.close();

           long size = file.getInputStream().available();

           //删除上传的临时文件

           file.delete();

           //显示数据

           resp.setContentType("text/html;charset=UTf-8");

           PrintWriter op = resp.getWriter();

           op.print("文件上传成功<br/>文件名:"+fileName);

           op.print("<br/>文件类型:"+fileType);

           op.print("<br/>文件大小(bytes)"+size);

       } catch (Exception e) {

           e.printStackTrace();

       }

    }
}

二 上传多个文件

第一步:修改页面的表单为多个input type=”file”

<form action="<c:url value='/Up3Servlet'/>" method="post" enctype="multipart/form-data">
File1:<input type="file" name="txt"><br/>
File2:<input type="file" name="txt"><br/>
<input type="submit"/>
</form>

第二步:遍历list<fileitem>

public class Up3Servlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String path = getServletContext().getRealPath("/up");
//声明disk
DiskFileItemFactory disk = new DiskFileItemFactory();
disk.setSizeThreshold(*);
disk.setRepository(new File("d:/a"));
//声明解析requst的servlet
ServletFileUpload up = new ServletFileUpload(disk);
try{
//解析requst
List<FileItem> list = up.parseRequest(request);
//声明一个list<map>封装上传的文件的数据
List<Map<String,String>> ups = new ArrayList<Map<String,String>>();
for(FileItem file:list){
Map<String,String> mm = new HashMap<String, String>();
//获取文件名
String fileName = file.getName();
fileName = fileName.substring(fileName.lastIndexOf("\\")+);
String fileType = file.getContentType();
InputStream in = file.getInputStream();
int size = in.available();
//使用工具类
FileUtils.copyInputStreamToFile(in,new File(path+"/"+fileName));
mm.put("fileName",fileName);
mm.put("fileType",fileType);
mm.put("size",""+size); ups.add(mm);
file.delete();
}
request.setAttribute("ups",ups);
//转发
request.getRequestDispatcher("/jsps/show.jsp").forward(request, response); }catch(Exception e){
e.printStackTrace();
}
}
}

使用apache-fileupload处理文件上传与上传多个文件 二(60)的更多相关文章

  1. Apache FileUpload实现文件上传

    今天,我来介绍一个Apache FileUpload这个插件的使用. 首先,到官网下载相关jar包点击这里下载,这里提供是v1.2. 1.在项目中导入相关jar包commons-fileupload- ...

  2. 模拟文件上传(三):使用apache fileupload组件进行文件批量上传

    其中涉及到的jar包 jsp显示层: <%@ page language="java" import="java.util.*" pageEncoding ...

  3. 使用jQuery.FileUpload插件和服Backload组件自定义上传文件夹

    在零配置情况下,文件的上传文件夹是根目录下的Files文件夹,如何自定义文件的上传文件夹呢? □ 在web.config中配置 1: <configuration> 2: <conf ...

  4. (转)ASP.NET(C#)FileUpload实现上传限定类型和大小的文件到服务器

    上传文件有两个主要的目的地,一个是服务器,另一个是数据库,ASP.NET内置了FileUpload这个上传控件,文本框显示用户选择的文件的全名. 其属性主要包括: ContenLength:上传文件大 ...

  5. java采用Apache FileUpload组件实现上传

    可见:FileItemSteam(servletFileUpload.getItemIterator(httpServletRequest))速度要快于FileItem(servletFileUplo ...

  6. Struts2文件上传(基于表单的文件上传)

    •Commons-FileUpload组件 –Commons是Apache开放源代码组织的一个Java子项目,其中的FileUpload是用来处理HTTP文件上传的子项目   •Commons-Fil ...

  7. SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html

    SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html 说明: 1.环境:SpringMVC+Spring+Tomcat7+JDK1.7 2.支持 zip和rar格式的压 ...

  8. java实现大文件上传分片上传断点续传

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...

  9. 使用swfupload上传超过30M文件,使用FLASH上传组件

    原文:使用swfupload上传超过30M文件,使用FLASH上传组件 前一段时间会员的上传组件改用FLASH的swfupload来上传,既能很友好的显示上传进度,又能完全满足大文件的上传. 后来服务 ...

  10. 文件上传~Uploadify上传控件

    对于文件上传来说,有很多种实现方式,如传统的表单方式,现在流行的flash方式,甚至还有纯JS方式,之所以有这些方式来实现文件上传,我想主要原因是因为,传统的上传对于大文件支持不够,因为它是单线程同步 ...

随机推荐

  1. java.lang.VerifyError: Inconsistent stackmap frames at branch target 81

    java项目中有如下代码: @RequestMapping(value = "/getMxList") @ResponseBody public Map<String, Ob ...

  2. Linux centos下php安装cphalcon扩展的方法

    说明: 操作系统:CentOS php安装目录:/usr/local/php php.ini配置文件路径:/usr/local/php/etc/php.ini 1.安装cphalcon cd /usr ...

  3. 再谈C#编码规范

    编码规范是老生常谈的问题,现在再看代码规范可能不会再去在意变量,控件的命名方法等,而是更加关注代码的实用性. 首先我们要明白一下几点, 1.代码写出来除了让他跑起来还有个非常非常重要的作用是维护,因为 ...

  4. python:dist-packages && site-packages

    先简单描述下问题.我用的ubuntu,源码编译安装的python3.我安装一些库,需要通过apt-get方式安装,这个时候就会遇到python找不到这些库的问题. 有个文章可以简单看看:http:// ...

  5. xshell评估过期解决办法

    1.登录网景官网的下载页面: https://www.netsarang.com/download/down_form.html?code=522 2.直接在页面中有红色*号的地方输入个人信息,lic ...

  6. Python id() 函数

    Python id() 函数  Python 内置函数 描述 id() 函数用于获取对象的内存地址. 语法 id 语法: id([object]) 参数说明: object -- 对象. 返回值 返回 ...

  7. for 续4

    ---------siwuxie095             (四)tokens=x,y,m-n 显示指定的列     tokens=x 只显示第 x 列 tokens=x,y,z 只显示第 x,y ...

  8. Python操作mysql之模块pymysql

    pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持3.x版本. 本文环境 python3.6.1  Mysql ...

  9. W-D-S-Nandflash

    1.6410的硬件一上电就会把nandflash前8K的内容拷贝到6410片内内存来,从片内内存0地址开始运行,如果烧写到nandflash里面的程序大于8k,则拷贝到6410片内的8k程序要把nan ...

  10. firefox快速刷新error及解决办法

    问题: 测试发过来bug,说——频繁F5刷新页面,会闪现未加载完样式的页面:    开发用的Chrome,没发现这个问题,测试用的firefox,于是从浏览器的刷新加载机制方面搜索解决办法,没搜到,运 ...