关键代码如下:

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. ODPS_ele—UDF Python API

    自定义函数(UDF) UDF全称User Defined Function,即用户自定义函数.ODPS提供了很多内建函数来满足用户的计算需求,同时用户还可以通过创建自定义函数来满足不同的计算需求.UD ...

  2. java Runnable、Callable、FutureTask 和线程池

    一:Runnable.Callable.FutureTask简介 (1)Runnable:其中的run()方法没有返回值. ①.Runnable对象可以直接扔给Thread创建线程实例,并且创建的线程 ...

  3. [BZOJ 2257][JSOI2009]瓶子和燃料 题解(GCD)

    [BZOJ 2257][JSOI2009]瓶子和燃料 Description jyy就一直想着尽快回地球,可惜他飞船的燃料不够了. 有一天他又去向火星人要燃料,这次火星人答应了,要jyy用飞船上的瓶子 ...

  4. js如何用json 读取C#的Dictionary

    1. .net中Controller里面的方法 /// <summary> /// 流程图 /// </summary> /// <returns>返回对象Json ...

  5. 洛谷 P3320: bzoj 3991: LOJ 2182: [SDOI2015]寻宝游戏

    题目传送门:LOJ #2182. 题意简述: 一棵 \(n\) 个节点的树,边有边权. 每个点可能是关键点,每次操作改变一个点是否是关键点. 求所有关键点形成的极小联通子树的边权和的两倍. 题解: 有 ...

  6. 转:存储之直连存储Dell Powervault MD 3000

    存储之直连存储DellPowervault MD 3000 存储根据服务器类型可以分为:封闭系统的存储和开放系统的存储 1.封闭系统的存储:封闭系统主要指大型机,AS400等服务器 2.开放系统的存储 ...

  7. python3之模块random随机数

    1.random.random() 随机生成一个大于0小于1的随机数. print(random.random()) 0.03064765450719098 2.random.uniform(a,b) ...

  8. MySQL Dual-Master 双向同步

    本文介绍的Mysql Dual-Master 复制实施方法可能不是最完美.最强大的.但是在我的应用环境下能很好的满足各项需求. 本文基于我们仅仅使用两台MySQL服务器的情况下,但是你会发现文章中介绍 ...

  9. MongoDB存储基础教程

    一.MongoDB简介 1. mangodb是一种基于分布式.文件存储的非关系型数据库 2. C++写的,性能高 3. 为web应用提供可扩展的高性能数据存储解决方案 4. 所支持的格式是json格式 ...

  10. Android WebView 详解

    相关API 相关类介绍 WebResourceRequest 添加于API21,封装了一个Web资源的请求信息,包含:请求地址,请求方法,请求头,是否主框架,是否用户点击,是否重定向 WebResou ...