package com.zhanghaobo.fileupload;

 import java.io.File;
import java.io.IOException;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload; public class UploadServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
DiskFileItemFactory factory=new DiskFileItemFactory(); String realPath=req.getRealPath("/upload"); //物理缓存存放地
factory.setRepository(new File(realPath)); //设置内存存放大小
factory.setSizeThreshold(1024*1024); ServletFileUpload upload=new ServletFileUpload(factory);
//FileItem 可以表示文件(file)也可以表示文本域(form item) 有一个isFormField方法判断是否是表单
try{
List<FileItem> list=(List<FileItem>)upload.parseRequest(req);
for(FileItem item:list){
String name=item.getFieldName();
if(item.isFormField()){
String value=item.getString();
req.setAttribute(name, value);
}else{
String value=item.getName();
int start=value.lastIndexOf("\\");
String fileName=value.substring(start+1);
req.setAttribute(name, fileName);
//上传文件存放地
item.write(new File(realPath,fileName));
}
}
}catch(Exception e){
e.printStackTrace();
} req.getRequestDispatcher("showResult.jsp").forward(req, resp);
}
}
 public class UploadServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
DiskFileItemFactory factory=new DiskFileItemFactory(); String realPath=req.getRealPath("/upload"); //物理缓存存放地
factory.setRepository(new File(realPath)); //设置内存存放大小
factory.setSizeThreshold(1024*1024); ServletFileUpload upload=new ServletFileUpload(factory);
//FileItem 可以表示文件(file)也可以表示文本域(form item) 有一个isFormField方法判断是否是表单
try{
List<FileItem> list=(List<FileItem>)upload.parseRequest(req);
for(FileItem item:list){
String name=item.getFieldName();
if(item.isFormField()){
String value=item.getString();
req.setAttribute(name, value);
}else{
String value=item.getName();
int start=value.lastIndexOf("\\");
String fileName=value.substring(start+1);
req.setAttribute(name, fileName); //上传文件存放地
// item.write(new File(realPath,fileName)); InputStream is=item.getInputStream(); long all=item.getSize(); OutputStream os=new FileOutputStream(new File(realPath,fileName)); byte[] buffer=new byte[400]; int length=0;
int l=0;
DecimalFormat df=new DecimalFormat("#.00");
while(-1!=(length=is.read(buffer))){
os.write(buffer,0,length);
l+=length;
System.out.println("总大小"+all+""+"进度:"+(df.format((double)l/all*100))+"%"+"已经读取的大小"+l);
} is.close();
os.close(); }
}
}catch(Exception e){
e.printStackTrace();
} req.getRequestDispatcher("showResult.jsp").forward(req, resp);
}
}

使用servlet实现文件上传的更多相关文章

  1. Servlet实现文件上传

    一.Servlet实现文件上传,需要添加第三方提供的jar包 下载地址: 1) commons-fileupload-1.2.2-bin.zip      :   点击打开链接 2) commons- ...

  2. Servlet实现文件上传,可多文件上传

    一.Servlet实现文件上传,需要添加第三方提供的jar包 接着把这两个jar包放到 lib文件夹下: 二: 文件上传的表单提交方式必须是POST方式, 编码类型:enctype="mul ...

  3. 配置servlet支持文件上传

    Servlet3.0为Servlet添加了multipart配置选项,并为HttpServletRequest添加了getPart和getParts方法获取上传文件.为了使Servlet支付文件上传需 ...

  4. jsp+servlet实现文件上传下载

    相关素材下载 01.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  5. java commons-fileupload servlet 多文件上传

    commons-fileupload servlet 多文件上传 需要引入的 jar 包. commons-fileupload-1.3.2.jar commons-io-2.2.jar 工程路劲:查 ...

  6. servlet web文件上传

    web文件上传也是一种POST方式,特别之处在于,需设置FORM的enctype属性为multipart/form-data. 并且需要使用文件域. servlet的代码比较关键是这几句: // 使用 ...

  7. 通过JSP+servlet实现文件上传功能

    在TCP/IP中,最早出现的文件上传机制是FTP.它将文件由客户端到服务器的标准机制. 但是在JSP中不能使用FTP来上传文件,这是有JSP的运行机制所决定的. 通过为表单元素设置Method=&qu ...

  8. Servlet之文件上传

    上传表单中的注意事项: 表单 method 属性应该设置为 POST 方法,不能使用 GET 方法 表单 enctype 属性应该设置为multipart/form-data 下面的实例是借助于com ...

  9. 使用FileUpload实现Servlet的文件上传

    简介 FileUpload 是 Apache commons下面的一个子项目,用来实现Java环境下的文件上传功能. FileUpload链接 FileUpload 是基于Apache的Commons ...

  10. Servlet中文件上传下载

    1.文件下载: package FileUploadAndDown; import java.io.FileInputStream; import java.io.IOException; impor ...

随机推荐

  1. [反汇编练习] 160个CrackMe之027

    [反汇编练习] 160个CrackMe之027. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

  2. Perfect smooth scrolling in UITableViews

    https://medium.com/ios-os-x-development/perfect-smooth-scrolling-in-uitableviews-fd609d5275a5 Diffic ...

  3. 详解Android动画之Frame Animation(转)

    在开始实例讲解之前,先引用官方文档中的一段话: Frame动画是一系列图片按照一定的顺序展示的过程,和放电影的机制很相似,我们称为逐帧动画.Frame动画可以被定义在XML文件中,也可以完全编码实现. ...

  4. activiti参考5-任务TASK

    一.概要 1,设计TASK的表主要是:ACT_RU_TASK,ACT_HI_TASKINST(见参考-activiti表): 2,任务主要有:人工任务(usertask),服务任务(serviceta ...

  5. linux 命令部分说明

    shell 文件头格式   #! /bin/sh 定义变量  dir_tmp=/tmp/xxx 级联创建 mkdir -p /etc/aaa/bbb 阻塞命令 等待用户输入回车  继续    read ...

  6. python知识:json格式文本;异常处理;字符串处理;unicode类型和str类型转换

    python进程中的实例和json格式的字符串之间的映射关系是非常直接的,相当于同一个概念被编码成不同的表示: stream in json form ----json.loads(str)----- ...

  7. 【转】RTSP实例解析

    原文网址:http://www.cnblogs.com/qq78292959/archive/2010/08/12/2077039.html. 核心提示:rtsp简介(ZT) Real Time St ...

  8. redo和undo的区别

    转摘:http://blog.163.com/jing_playboy/blog/static/757362222012520104521864/   redo--> undo-->dat ...

  9. 平板与PC的文件交互及播放

    发现在kindle上可以用ES开个浏览器,把FTP打开,实现文件的互访,之前还弄了一个大圈下了一大堆的垃圾软件, 而看电脑上的流媒体的话,则可以用dice播放器add一下samba就可以了

  10. 使用java写入excel文件

    要操作excle文件,首先要下载jxl.jar文件,我用的版本是2.6.下载地址:http://www.andykhan.com/jexcelapi/download.html. Java Excel ...