使用servlet实现文件上传
- 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实现文件上传的更多相关文章
- Servlet实现文件上传
一.Servlet实现文件上传,需要添加第三方提供的jar包 下载地址: 1) commons-fileupload-1.2.2-bin.zip : 点击打开链接 2) commons- ...
- Servlet实现文件上传,可多文件上传
一.Servlet实现文件上传,需要添加第三方提供的jar包 接着把这两个jar包放到 lib文件夹下: 二: 文件上传的表单提交方式必须是POST方式, 编码类型:enctype="mul ...
- 配置servlet支持文件上传
Servlet3.0为Servlet添加了multipart配置选项,并为HttpServletRequest添加了getPart和getParts方法获取上传文件.为了使Servlet支付文件上传需 ...
- jsp+servlet实现文件上传下载
相关素材下载 01.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ...
- java commons-fileupload servlet 多文件上传
commons-fileupload servlet 多文件上传 需要引入的 jar 包. commons-fileupload-1.3.2.jar commons-io-2.2.jar 工程路劲:查 ...
- servlet web文件上传
web文件上传也是一种POST方式,特别之处在于,需设置FORM的enctype属性为multipart/form-data. 并且需要使用文件域. servlet的代码比较关键是这几句: // 使用 ...
- 通过JSP+servlet实现文件上传功能
在TCP/IP中,最早出现的文件上传机制是FTP.它将文件由客户端到服务器的标准机制. 但是在JSP中不能使用FTP来上传文件,这是有JSP的运行机制所决定的. 通过为表单元素设置Method=&qu ...
- Servlet之文件上传
上传表单中的注意事项: 表单 method 属性应该设置为 POST 方法,不能使用 GET 方法 表单 enctype 属性应该设置为multipart/form-data 下面的实例是借助于com ...
- 使用FileUpload实现Servlet的文件上传
简介 FileUpload 是 Apache commons下面的一个子项目,用来实现Java环境下的文件上传功能. FileUpload链接 FileUpload 是基于Apache的Commons ...
- Servlet中文件上传下载
1.文件下载: package FileUploadAndDown; import java.io.FileInputStream; import java.io.IOException; impor ...
随机推荐
- impersonate a user
// This sample demonstrates the use of the WindowsIdentity class to impersonate a user. // IMPORTANT ...
- hibernate封装查询,筛选条件然后查询
// 封装查询条件 @Test public void transmitParameter() { Map map = new HashMap<String, String>(); // ...
- KVM虚拟化技术简介
kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中.它使用Linux自身的调度器进行管理,所 ...
- centos6 下安装xfce+vnc
CentOS 安装图形界面的过程,简单记录一下.这里提供了两种图形界面的安装,分别是CentOS自带的gnome桌面及轻巧的xfce.据测试,我的精简版CentOS 6 64位系统安装gnome需要下 ...
- Android 网络流量监听开源项目-ConnectionClass源码分析
很多App要做到极致的话,对网络状态的监听是很有必要的,比如在网络差的时候加载质量一般的小图,缩略图,在网络好的时候,加载高清大图,脸书的android 客户端就是这么做的, 当然伟大的脸书也把这部分 ...
- IOS 单例 创建方式
@implementation Me static Car *sharedInstance= nil;//声明一个静态对象引用并赋为nil +(Me *) sharedInstance//声明类方法( ...
- 可以用google了
半年都上不了google,现在可以了, 哈哈,支持自动更新, 有时候用google还是很不错的,尤其是英文搜索.
- web开发中禁止因为网速慢导致重复提交数据
var checkSubmitFlg = false; function check() { if (!checkSubmitFlg) { ...
- 1005acm罚时
ACM国际大学生程序设计竞赛是由国际计算机学会主办的,一项旨在展示大学生创新能力.团队精神和在压力下编写程序.分析和解决问题能力的年度竞赛.参赛队伍最多由三名参赛队员组成,竞赛中一般命题10-13题, ...
- 求职基础复习之冒泡排序c++版
代码中在第一层循环中增加一个bool值,是为了防止在排序完成后还继续无谓的比较,最多会有(n-1)*(n-2)/2次循环. #include<iostream> using namespa ...