一 使用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. 8 MySQL--单表查询

    单表查询: http://www.cnblogs.com/linhaifeng/articles/7267592.html 1.单表查询的语法 2.关键字的执行优先级(重点) 3.简单查询 4.whe ...

  2. 迷你MVVM框架 avalonjs 1.2.5发布

    avalon1.2.5发布,升级ms-widget,整合avalon.require.text到核心,并且修复了avalon.mobile的avalon.innerHTML方法的BUG,让它能执行脚本 ...

  3. 2015年传智播客JavaEE 第168期就业班视频教程11-导入配置文件

    资源文件放在Source Folder目录下面,这个目录同样会编译到classes目录下 web.xml的 <listener> <listener-class>org.spr ...

  4. 二叉树叶子顺序遍历 · binary tree leaves order traversal

    [抄题]: 给定一个二叉树,像这样收集树节点:收集并移除所有叶子,重复,直到树为空. 给出一个二叉树: 1 / \ 2 3 / \ 4 5 返回 [[4, 5, 3], [2], [1]]. [暴力解 ...

  5. 26-python图形化插件 wxpython安装时的问题

    最实在而又最实用的的安装方式pip,且必须习惯使用的方式,会同步安装相关的依赖包: pip install -U wxPython 总是包超时的错误:于是更新了pip 之后还是不行,于是改为了下面的命 ...

  6. spring框架 构造方法注入

    在resources里面新建applicationContext.xml 配置如下: <?xml version="1.0" encoding="UTF-8&quo ...

  7. 区块链相关在线加解密工具(非对称加密/hash)

    https://cse.buffalo.edu/blockchain/tools.html https://cse.buffalo.edu/blockchain/encryption.html 由纽约 ...

  8. Vue 路由缓存

    问题 在路由切换时不需要每次 点击都刷新子路由   尤其是在form表单的情况下  不能让用户 输入一半之后点击其他页面  再点回来 表单数据不见了 解决方案   vue 2.0     之中  有k ...

  9. JetBrains全家桶激活地址

    全家桶地址:https://www.jetbrains.com/products.html?fromMenu JetBrains 授权服务器(License Server URL):http://id ...

  10. dedecms实例化对象

    1.建表 2.创建实体类 4.tc文件加载该实体类 5.用的时候,引入tc.php文件,并实例化