1.上传组件

①Apache的Commons FileUpload

②JavaZoom的UploadBean

③JspSmartUpload

2.下载Commons的FileUpload组件

地址:http://commons.apache.org/fileupload/

同时还要下载Commons的IO组件

地址:http://commons.apache.org/io/

3.使用实例

步骤一:创建文件上传的页面:fileUpload.jsp

注意表单的 enctype 属性,这个设置很重要,详情请见:http://www.cnblogs.com/yinger/archive/2011/09/11/2173689.html

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>文件上传</title></head><body><form action="<%=request.getContextPath() %>/servlet/FileUploadServlet" method="post" enctype="multipart/form-data" >上传人名:<input type="text" name="name" /><br/>      上传文件:<input type="file" name="file" /><br/><input type="submit" name="submit" value="提交" /></form></body>
</html>

步骤二:创建处理文件上传的servlet:fileUploadServlet

package com.yinger.servlet;import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
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 FileUploadServlet extends HttpServlet {private ServletContext sc;private String savePath;private static final long serialVersionUID = 151650843430214502L;public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("UTF-8");DiskFileItemFactory factory = new DiskFileItemFactory();ServletFileUpload servletFileUpload = new ServletFileUpload(factory);//通过工厂生成一个处理文件上传的servlet对象try {List items = servletFileUpload.parseRequest(request);//解析requestIterator iterator = items.iterator();while (iterator.hasNext()) {FileItem item = (FileItem) iterator.next();if(item.isFormField()){//表单的参数字段System.out.println("表单的参数名称:"+item.getFieldName()+",表单的参数值:"+item.getString("UTF-8"));}else {if(item.getName()!=null && !item.getName().equals("")){//一个上传的文件System.out.println("文件的名称:"+item.getName());System.out.println("文件的大小:"+item.getSize());System.out.println("文件的类型:"+item.getContentType());File tempFile = new File(item.getName());//getName得到的文件名称包含了它在客户端的路径File file = new File(sc.getRealPath("/")+savePath,tempFile.getName());item.write(file);//将上传的文件写入到file中request.setAttribute("message", "上传文件成功!");}else{request.setAttribute("message", "没有选择上传文件!");}}}} catch (Exception e) {e.printStackTrace();request.setAttribute("message", "上传文件失败!");}request.getRequestDispatcher("/fileUploadResult.jsp").forward(request, response);//转向,输出结果}@Overridepublic void init(ServletConfig config) throws ServletException {savePath = config.getInitParameter("savePath");sc = config.getServletContext();        }}

步骤三:修改web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web=http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"><display-name></display-name><servlet><description>This is the description of my J2EE component</description><display-name>This is the display name of my J2EE component</display-name><servlet-name>FileUploadServlet</servlet-name><servlet-class>com.yinger.servlet.FileUploadServlet</servlet-class><init-param> <!-- Servlet的初始化参数,配置上传文件的保存路径,这里是当前应用的uplods目录下 --><param-name>savePath</param-name><param-value>uploads</param-value></init-param></servlet><servlet-mapping><servlet-name>FileUploadServlet</servlet-name><url-pattern>/servlet/FileUploadServlet</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

同时在项目的根目录下创建文件夹 uploads (可以就在WebRoot中创建)

步骤四:创建显示上传结果的页面:fileUploadResult.jsp

<%@ page language="java" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>文件上传</title></head><body><p>${requestScope['message'] }<br/></p></body>
</html>

效果展示

JavaWeb之文件上传相关推荐

  1. JavaWeb实现文件上传下载功能实例解析

    转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...

  2. JavaWeb:实现文件上传与下载

    JavaWeb:实现文件上传与下载 文件上传前端处理 本模块使用到的前端Ajax库为Axio,其地址为GitHub官网. 关于文件上传 上传文件就是把客户端的文件发送给服务器端. 在常见情况(不包含文 ...

  3. Javaweb之文件上传与下载

    Javaweb之文件上传与下载 1. 文件上传下载概述 1.1. 什么是文件上传下载 所谓文件上传下载就是将本地文件上传到服务器端,从服务器端下载文件到本地的过程.例如目前网站需要上传头像.上传下载图 ...

  4. JavaWeb实现文件上传下载功能实例详解

    感谢原文作者分享,原文链接:http://www.jb51.net/article/96745.htm 这篇文章主要介绍了JavaWeb中的文件上传和下载功能的实现,在开发中,文件上传和下载功能是非常 ...

  5. javaWeb实现文件上传与下载 (转)

    文件上传概述 实现web开发中的文件上传功能,需完成如下二步操作: 在web页面中添加上传输入项 在servlet中读取上传文件的数据,并保存到本地硬盘中. 如何在web页面中添加上传输入项? < ...

  6. javaweb实现文件上传,前端与后台的结合实现

    大家好,这是原创的文件上传源码哦. 希望给大家带来参考价值. 阅读注意: 1.只给出了关键代码(但是绝大部分代码),需要自己小小润色一下. 2.代码分为前端与后台, 3.本人初学者,有错,望您指出. ...

  7. java 上传 进度,关于 javaweb的文件上传实时显示进度

    方法:使用单例保存实时信息.具体的实现方法就是,当用户点击了处理按钮时,在后台开启一个线程进行处理,并且每进行到一步,就向单例中写入当前状态信息.然后编写一个servlet,用于返回单例中的信息,前台 ...

  8. 使用JavaWeb将文件上传到后台服务器

    文件上传 1.面试:文件上传调优 上传的文件存放在一个不能使用外界URL访问的目录下面 上传到同一个文件夹中的文件名称应该唯一:使用时间戳/UUID/MD5等手段实现 限制上传文件的最大值:因为服务器 ...

  9. javaweb(八)文件上传

    文件上传概述 文件上传实际上就是Browser (浏览器)跟 Server(服务器)的数据互动 上传:我们把需要上传的资源,发送给服务器,在服务器上保存下来.在智联招聘上填写一个完整的简历还需要上传照 ...

最新文章

  1. R语言将多分类数据集转化为二分类数据集,使用条件判断将多分类转化为二分类(transform dataset into a dichotomous factor response dataset)
  2. 1118 实验三 有限自动机的构造与识别
  3. ElasticSearch第一天
  4. andriod 开发记录apidemos 错误解决
  5. java在文档末尾添加_如何在打开表单后将子文件添加到Word文档的末尾?
  6. linux网络流量实时监控工具之iptraf 【个人比较喜欢用的流量监控软件】
  7. JavaScript原型与原型链
  8. 熊猫删除重复行– drop_duplicates()函数
  9. Android源码学习(一)系统源码初识
  10. Linux基础入门(详细版)
  11. html 插件 firefox,firefox插件 怎么在firefox里添加插件
  12. NOI 1.5编程基础之循环控制_02:财务管理(编辑过程解)
  13. 一篇文章教你整合ssm配置,可以收藏。
  14. visio 画图记录
  15. 我的图床解决方案,超详细!
  16. centos6.0 64位挂载ntfs分区
  17. 康卡斯特使持续升级,以有线电视
  18. uniapp 封装时间选择器组件
  19. 滑膜观测器物理意义_PMSM扩展状态滑模观测器和转子位置和速度估算.PDF
  20. win7开机卡在桌面无图标,任务管理器打不开的一种解决办法

热门文章

  1. zabbix监控mysql数据库性能实现
  2. linux   vim配置,打造ide
  3. gcc 无法编译问题解决
  4. 浏览器兼容性 问题收集
  5. 音视频即时通讯的介绍与前景
  6. 修改mysql远程连接
  7. MS CRM 2011 RC中的新特性(2)——销售自动化方面
  8. Window.Open() 和 window.showModalDialog()参数
  9. Hibernate标识符属性(主键)生成策略全析
  10. HTML DOM 属性