文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件上传功能。
common-fileupload组件是apache的一个开源项目之一,可以从http://jakarta.apache.org/commons/fileupload/下载。用该组件可实现一次上传一个或多个文件,并可限制文件大小。
下载后解压zip包,将commons-fileupload-1.0.jar复制到tomcat的webapps\你的webapp\WEB-INF\lib\下,目录不存在请自建目录。
新建一个servlet: Upload.java用于文件上传:
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.fileupload.*;

public class Upload extends HttpServlet {

private String uploadPath = "C:\\upload\\"; // 上传文件的目录
    private String tempPath = "C:\\upload\\tmp\\"; // 临时文件目录

public void doPost(HttpServletRequest request,
    HttpServletResponse response)
    throws IOException, ServletException
    {
    }
}
在doPost()方法中,当servlet收到浏览器发出的Post请求后,实现文件上传。以下是示例代码:
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
    try {
        DiskFileUpload fu = new DiskFileUpload();
        // 设置最大文件尺寸,这里是4MB
        fu.setSizeMax(4194304);
        // 设置缓冲区大小,这里是4kb
        fu.setSizeThreshold(4096);
        // 设置临时目录:
        fu.setRepositoryPath(tempPath);

// 得到所有的文件:
        List fileItems = fu.parseRequest(request);
        Iterator i = fileItems.iterator();
        // 依次处理每一个文件:
        while(i.hasNext()) {
            FileItem fi = (FileItem)i.next();
            // 获得文件名,这个文件名包括路径:
            String fileName = fi.getName();
            // 在这里可以记录用户和文件信息
            // ...
            // 写入文件,暂定文件名为a.txt,可以从fileName中提取文件名:
            fi.write(new File(uploadPath + "a.txt"));
        }
    }
    catch(Exception e) {
        // 可以跳转出错页面
    }
}
如果要在配置文件中读取指定的上传文件夹,可以在init()方法中执行:
public void init() throws ServletException {
    uploadPath = ....
    tempPath = ....
    // 文件夹不存在就自动创建:
    if(!new File(uploadPath).isDirectory())
        new File(uploadPath).mkdirs();
    if(!new File(tempPath).isDirectory())
        new File(tempPath).mkdirs();
}
编译该servlet,注意要指定classpath,确保包含commons-upload-1.0.jar和tomcat\common\lib\servlet-api.jar。
配置servlet,用记事本打开tomcat\webapps\你的webapp\WEB-INF\web.xml,没有的话新建一个。
典型配置如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
    <servlet>
        <servlet-name>Upload</servlet-name>
        <servlet-class>Upload</servlet-class>
    </servlet>

<servlet-mapping>
        <servlet-name>Upload</servlet-name>
        <url-pattern>/fileupload</url-pattern>
    </servlet-mapping>
</web-app>
配置好servlet后,启动tomcat,写一个简单的html测试:
<form action="fileupload" method="post"
enctype="multipart/form-data" name="form1">
  <input type="file" name="file">
  <input type="submit" name="Submit" value="upload">
</form>
注意action="fileupload"其中fileupload是配置servlet时指定的url-pattern

使用FileUpload组件上传文件相关推荐

  1. 使用Fileupload组件上传文本和文件

    使用fileupload组件上传文本和文件 绪论 使用fileupload组件可以很方便的向服务器上传数据,包括表单数据以及二进制文件,比如pdf.图片视频等等.下面演示如何上传form表单数据以及二 ...

  2. javaweb上传文件_javaWeb中,如何通过CommonsFileUpload组件上传文件

    大家好,欢迎来到雄雄的小课堂,今天给大家分享的是<javaWeb中,如何通过Commons-FileUpload组件上传文件> 前言:文件上传大家都不陌生,在这个互联网飞速发展的时代,共享 ...

  3. 使用SmartUpload组件上传文件

    刚刚上手的项目 被文件上传困扰了好久,之前用fileupload组件上传,代码参考孤傲苍狼博客,可是除了文件名,表单内的其他内容不知道该怎么读出来进行存储:所以此次采用smartupload组件进行上 ...

  4. 使用commons-fileupload组件上传文件(随笔)

    1.第三方控件又被称为是第三方组件,使用第三方组件,可以避免大量编码,减少开发工作量及由于逻辑或算法造成的程序异常,从而降低开发成本,提高开发效率.由于第三方组件是第三方组织或者个人提供的,在开发时提 ...

  5. 在jsp中使用smartupload组件上传文件- -

    在jsp中使用smartupload组件上传文件- - jsp对上传文件的支持不象php中支持的那么好,直接做成了函数,也不象asp中要通过组件才能实现.jsp中可以通过javabean来实现.但是我 ...

  6. element-ui upload组件 上传文件类型限制

    element-ui upload组件 上传文件类型限制 <el-uploadclass="c-upload"ref="upload":action=&q ...

  7. 使用SmartUpload组件上传文件,自己踩过的坑

    昨天使用SmartUpload组件上传文件,代码很简单: smartupload_demo01.html <html> <head><title>smartuplo ...

  8. ant design Upload组件上传文件类型

    Upload组件上传文件类型设置 1.设置上传文件类型为excel <template><a-uploadname="file":multiple="t ...

  9. asp实现无组件上传文件原理

    一.上传网页     上传页面代码: <form   action="upload.asp"   method="post"   enctype=&quo ...

  10. 十分钟学会使用fileupload插件上传文件

    使用fileupload上传文件 相关插件的安装 commons-io 官方下载地址 commons-fileupload 官方下载地址 示例 JSP完成页面展示 要完成文件上传操作,必须使用file ...

最新文章

  1. 人脸识别大规模爆发!
  2. Visual Studio “Orcas” Beta 2 开始发布多语种版本 包含简体中文
  3. Spring Cloud的核心成员、以及架构实现详细介绍
  4. 3dmax批量导入obj_ArcGIS 与 3DMax 结合建模
  5. 带网格的_装修要不要用网格布,了解这几点之后再做决定
  6. 不同项目的测试计划可以复用吗_不同品牌的水乳可以一起用吗 混合使用完全没问题...
  7. FusionCharts图表右键菜单的各种典型示例
  8. linux 环境变量和shell变量
  9. 关于联想oem系统激活方法尝试
  10. 软件项目验收测试报告-软件项目验收流程
  11. 三级计算机信息安全基础知识
  12. 基于eclipse的俄罗斯方块游戏
  13. 利用Linux的crontab实现定时执行python任务
  14. Linux目录以及文件权限理解
  15. 软件智能:aaas系统中的数学程序与技术服务之1 序篇之 绪言
  16. 爬虫03 —— 正则表达式
  17. 搜狗和QQ 拼音输入法,如何输入拼音的音调ā ō è ì ǔ ǘ
  18. 时空之轮Android手柄,经典角色扮演类游戏 Android时空之轮
  19. 中小企业如何进行云灾备?
  20. 生化危机二重制版游戏总结

热门文章

  1. 让《强化学习(第2版)》架起一座通往强化学习经典知识宝库的桥梁
  2. 这个冬天,我以《监控》下酒
  3. 操作系统和嵌入式开发 你愿意参加吗?
  4. 从程序员到CTO也可以走捷径
  5. 8.11 Matching Networks 匹配网络
  6. 大端、小端的前世今生
  7. caffe利用shell创建train.txt和val.txt做数据输入
  8. centos7中Python切换到Python3.x版本(解决常出现的错误)
  9. ftp匿名登录_flashfxp4,flashfxp4简介及好用的FTP工具
  10. VMware虚拟机启动后出现黑屏,挂起关机无响应解决方案