JavaWeb之文件上传
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之文件上传相关推荐
- JavaWeb实现文件上传下载功能实例解析
转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...
- JavaWeb:实现文件上传与下载
JavaWeb:实现文件上传与下载 文件上传前端处理 本模块使用到的前端Ajax库为Axio,其地址为GitHub官网. 关于文件上传 上传文件就是把客户端的文件发送给服务器端. 在常见情况(不包含文 ...
- Javaweb之文件上传与下载
Javaweb之文件上传与下载 1. 文件上传下载概述 1.1. 什么是文件上传下载 所谓文件上传下载就是将本地文件上传到服务器端,从服务器端下载文件到本地的过程.例如目前网站需要上传头像.上传下载图 ...
- JavaWeb实现文件上传下载功能实例详解
感谢原文作者分享,原文链接:http://www.jb51.net/article/96745.htm 这篇文章主要介绍了JavaWeb中的文件上传和下载功能的实现,在开发中,文件上传和下载功能是非常 ...
- javaWeb实现文件上传与下载 (转)
文件上传概述 实现web开发中的文件上传功能,需完成如下二步操作: 在web页面中添加上传输入项 在servlet中读取上传文件的数据,并保存到本地硬盘中. 如何在web页面中添加上传输入项? < ...
- javaweb实现文件上传,前端与后台的结合实现
大家好,这是原创的文件上传源码哦. 希望给大家带来参考价值. 阅读注意: 1.只给出了关键代码(但是绝大部分代码),需要自己小小润色一下. 2.代码分为前端与后台, 3.本人初学者,有错,望您指出. ...
- java 上传 进度,关于 javaweb的文件上传实时显示进度
方法:使用单例保存实时信息.具体的实现方法就是,当用户点击了处理按钮时,在后台开启一个线程进行处理,并且每进行到一步,就向单例中写入当前状态信息.然后编写一个servlet,用于返回单例中的信息,前台 ...
- 使用JavaWeb将文件上传到后台服务器
文件上传 1.面试:文件上传调优 上传的文件存放在一个不能使用外界URL访问的目录下面 上传到同一个文件夹中的文件名称应该唯一:使用时间戳/UUID/MD5等手段实现 限制上传文件的最大值:因为服务器 ...
- javaweb(八)文件上传
文件上传概述 文件上传实际上就是Browser (浏览器)跟 Server(服务器)的数据互动 上传:我们把需要上传的资源,发送给服务器,在服务器上保存下来.在智联招聘上填写一个完整的简历还需要上传照 ...
最新文章
- R语言将多分类数据集转化为二分类数据集,使用条件判断将多分类转化为二分类(transform dataset into a dichotomous factor response dataset)
- 1118 实验三 有限自动机的构造与识别
- ElasticSearch第一天
- andriod 开发记录apidemos 错误解决
- java在文档末尾添加_如何在打开表单后将子文件添加到Word文档的末尾?
- linux网络流量实时监控工具之iptraf 【个人比较喜欢用的流量监控软件】
- JavaScript原型与原型链
- 熊猫删除重复行– drop_duplicates()函数
- Android源码学习(一)系统源码初识
- Linux基础入门(详细版)
- html 插件 firefox,firefox插件 怎么在firefox里添加插件
- NOI 1.5编程基础之循环控制_02:财务管理(编辑过程解)
- 一篇文章教你整合ssm配置,可以收藏。
- visio 画图记录
- 我的图床解决方案,超详细!
- centos6.0 64位挂载ntfs分区
- 康卡斯特使持续升级,以有线电视
- uniapp 封装时间选择器组件
- 滑膜观测器物理意义_PMSM扩展状态滑模观测器和转子位置和速度估算.PDF
- win7开机卡在桌面无图标,任务管理器打不开的一种解决办法