关键代码如下:

index.jsp

  1. <body>
  2. <center>
  3. <h3>文件上传</h3>
  4. <font color="red"><%=request.getAttribute("msg")==null?"":request.getAttribute("msg") %> </font>
  5. <form enctype="multipart/form-data" method="post" action="servlet/FileUploadServlet">
  6. 文件描述:<input type="text" name="text" /><br/>
  7. 选择文件:<input type="file" name="file1" /><br/>
  8. 选择文件:<input type="file" name="file2" /><br/>
  9. 选择文件:<input type="file" name="file3" /><br/>
  10. 选择文件:<input type="file" name="file4" /><br/>
  11. 选择文件:<input type="file" name="file5" /><br/>
  12. <input type="submit" value="上传" />
  13. </form>
  14. </center>
  15. </body>

FileUploadServlet.jsp

    1. package com.accp.fileupload.servlet;
    2. import java.io.File;
    3. import java.io.IOException;
    4. import java.util.List;
    5. import javax.servlet.ServletException;
    6. import javax.servlet.http.HttpServlet;
    7. import javax.servlet.http.HttpServletRequest;
    8. import javax.servlet.http.HttpServletResponse;
    9. import org.apache.commons.fileupload.FileItem;
    10. import org.apache.commons.fileupload.FileUploadException;
    11. import org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException;
    12. import org.apache.commons.fileupload.disk.DiskFileItemFactory;
    13. import org.apache.commons.fileupload.servlet.ServletFileUpload;
    14. public class FileUploadServlet extends HttpServlet {
    15. private static final long serialVersionUID = 2827297299439162553L;
    16. public void doGet(HttpServletRequest request, HttpServletResponse response)
    17. throws ServletException, IOException {
    18. //使用同一种处理方法
    19. doPost(request, response);
    20. }
    21. public void doPost(HttpServletRequest request, HttpServletResponse response)
    22. throws ServletException, IOException {
    23. request.setCharacterEncoding("UTF-8");
    24. response.setContentType("text/html; charset=UTF-8");
    25. //保存路径
    26. String savePath = getServletContext().getRealPath("/upload");
    27. File saveDir = new File(savePath);
    28. // 如果目录不存在,就创建目录
    29. if(!saveDir.exists()){
    30. saveDir.mkdir();
    31. }
    32. // 创建文件上传核心类
    33. DiskFileItemFactory factory = new DiskFileItemFactory();
    34. ServletFileUpload sfu = new ServletFileUpload(factory);
    35. //设置编码
    36. sfu.setHeaderEncoding("UTF-8");
    37. // 设置上传的单个文件的最大字节数为2M
    38. sfu.setFileSizeMax(1024*1024*2);
    39. //设置整个表单的最大字节数为10M
    40. sfu.setSizeMax(1024*1024*10);
    41. try{
    42. // 处理表单请求
    43. List<FileItem> itemList = sfu.parseRequest(request);
    44. for (FileItem fileItem : itemList) {
    45. // 对应表单中的控件的name
    46. String fieldName = fileItem.getFieldName();
    47. System.out.println("控件名称:" + fieldName);
    48. // 如果是普通表单控件
    49. if(fileItem.isFormField()){
    50. String value = fileItem.getString();
    51. //重新编码,解决乱码
    52. value = new String(value.getBytes("ISO-8859-1"),"UTF-8");
    53. System.out.println("普通内容:" + fieldName + "=" + value);
    54. // 上传文件
    55. }else{
    56. // 获得文件大小
    57. Long size = fileItem.getSize();
    58. // 获得文件名
    59. String fileName = fileItem.getName();
    60. System.out.println("文件名:"+fileName+"\t大小:" + size + "byte");
    61. //设置不允许上传的文件格式
    62. if(fileName.endsWith(".exe")){
    63. request.setAttribute("msg", "不允许上传的类型!");
    64. }else{
    65. //将文件保存到指定的路径
    66. File file = new File(savePath,fileName);
    67. fileItem.write(file);
    68. request.setAttribute("msg", "上传成功!");
    69. }
    70. }
    71. }
    72. }catch(FileSizeLimitExceededException e){
    73. request.setAttribute("msg", "文件太大");
    74. }catch(FileUploadException e){
    75. e.printStackTrace();
    76. }catch(Exception e){
    77. e.printStackTrace();
    78. }
    79. //上传完毕后  转发到首页
    80. request.getRequestDispatcher("/index.jsp").forward(request, response);
    81. }
    82. }

JSP Servlet学习笔记——使用fileupload上传文件的更多相关文章

  1. Python+Selenium学习笔记10 - send_keys上传文件

    在火狐浏览器上传文件 上传前,同一个HTML文件在火狐和Edge浏览器显示有些不同 这是Firefox浏览器的显示 这是Edge浏览器 上传后 1 # coding = utf-8 2 3 from ...

  2. FileUpload 上传文件,并实现c#使用Renci.SshNet.dll实现SFTP文件传输

    fileupload上传文件和jquery的uplodify控件使用方法类似,对服务器控件不是很熟悉,记录一下. 主要是记录新接触的sftp文件上传.服务器环境下使用freesshd搭建好环境后,wi ...

  3. jsp&servlet学习笔记

    1.路径引用问题 一个css.jsp.html.或者javascript文件从从一个工程复制到另一工程,如果引用的时候使用的时相对路径,看似没有错误,但是却一直引用不进来,这时候要使用绝对路径,这样才 ...

  4. JSP/Serlet 使用fileupload上传文件

    需要引用的jar commons-fileupload-1.3.1.jar commons-io-2.2.jar index.jsp <body> <center> <h ...

  5. linux学习笔记-linux主机上传下载文件至linux虚拟机的方法

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 1.上传文件 scp -r file 用户名@ip地址:目标目录 2.下载文件 scp -r 用户名@ip地址:文件 目标目录

  6. Web安全测试学习笔记-DVWA-图片上传

    很多网站都有上传资源(图片或者文件)的功能,资源上传后一般会存储在服务器的一个文件夹里面,如果攻击者绕过了上传时候的文件类型验证,传了木马或者其他可执行的代码上去,那服务器就危险了. 我用DVWA的文 ...

  7. 解决COS、FileUpload上传文件时中文文件名乱码问题

    方法: MultipartParser mp = new MultipartParser(request, 10*1024*1024); mp.setEncoding("GBK") ...

  8. SpringMVC使用FileUpload上传文件

    进口FileUpload和common-io的Jar包 注意:1.Struts2其它方法需要使用的:struts2过滤,将改变reqeust类型,由HttpServletRequest成为MultiP ...

  9. 工作笔记4.struts2上传文件到server

    本文介绍两种:上传文件到server的方式   一种是提交Form表单:还有一种是ajaxfileupload异步上传. 一.JSP中:     1.提交Form表单 为了能完毕文件上传,我们应该将这 ...

随机推荐

  1. mysql innobackupex 备份及恢复

    ----------------------------------全量备份恢复-------------------------------------1.生成一个完整的备份 innobackupe ...

  2. linux内存管理-内核用户空间 【转】

    转自:http://blog.chinaunix.net/uid-25909619-id-4491362.html 1,linux内存管理中几个重要的结构体和数组 page unsigned long ...

  3. mac安装sentry

    最近需要一个日志监视系统所以选择了sentry. 安装docker https://download.docker.com/mac/stable/Docker.dmg 登录 安装完了打开 会提示登录输 ...

  4. 数据库SQL中case when函数的用法

    Case具有两种格式,简单Case函数和Case搜索函数.这两种方式,可以实现相同的功能.简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式. 简单Cas ...

  5. springcloud Zuul中异常处理细节

    Spring Cloud Zuul对异常的处理整体来说还是比较方便的,流程也比较清晰,只是由于Spring Cloud发展较快,各个版本之间有差异,导致有的小伙伴在寻找这方面的资料的时候经常云里雾里, ...

  6. 深入理解java虚拟机-01 走进java

    第一章是对java的产生,历史的整体介绍 java的使用很广泛,安装jdk的时候会看到一句广告语runs in 10 billions machines.使用java的设备多达几十亿台 1.概述 优点 ...

  7. 记一些使用PyQt的问题

    本文自用,日常记录,不断更新 环境 1.使用 PyCharm IDE 2.PyQt5 3. 扩展配置 PyUIC转换后的代码处理 PyUIC 用于 将 QtDesigner 生成的 .ui 文件转换为 ...

  8. NET-知识点:C#中Equals和==比较

    第一.相等性比较 其实这个问题的的本质就是C#的相等比较,相等比较可以分两类: 1.引用相等性,引用相等性指两个对象引用均引用同一基础对象. 2.值相等性,值相等性指两个对象包含相同的一个或多个值,其 ...

  9. BZOJ 1086 王室联邦 | BFS

    BZOJ 1086 王室联邦 题意 把一棵树分块,每块大小在[B, 3B]之间(B由输入数据给出),每个块需要对应一个核心点,核心点可以在块内,这个点要满足块内每个点到核心点的路径上的点都属于这个块( ...

  10. docker commit 制作镜像

    docker commit -m="commit jdk" --author="gutianlangyu" ae56f6cad215 gutianlangyu/ ...