关键代码如下:

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. jquery(入门篇)无缝滚动

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  2. SQL SERVER C#数据库操作类(连接、执行SQL)

    using System; using System.Collections; using System.Collections.Specialized; using System.Data; usi ...

  3. rtop:一个通过 SSH 监控远程主机的交互式工具【转】

    编译自: http://www.tecmint.com/rtop-monitor-remote-linux-server-over-ssh/ rtop[1] 是一个基于 SSH 的直接的交互式远程系统 ...

  4. 百度编辑器ueditor 字符限制

    百度编辑器ueditor 字符限制 默认只能输入10000个字符 修改 ueditor.config.js // ,wordCount:true //是否开启字数统计 // ,maximumWords ...

  5. java 其它可选方法

    异常处理的一个原则时,只有当你在知道如何处理的情况下才捕获异常,异常处理的一个重要目标时将错误处理代码同错误发生的地点相分离. "被检查异常"强制你在还没准备好处理错误的时候被迫加 ...

  6. 浅谈HIbernate

    Hiberbate是面向对象,需要把对象和数据库进行映射.与数据库无关,操作的是对象,会根据数据源和数据库的方言生成对应的sql语句进行查询,是一个优秀的java持久层解决方案,是当今主流的对象-关系 ...

  7. javaweb笔记七

    过滤器:是一个web中间组件,用于拦截从客户端发送给服务器的请求和响应.当客户端向服务器发出请求时,服务器会查看是否有过滤器和该请求匹配,如果有,则交给过滤器执行,业务操作后,可以将请求继续向目标资源 ...

  8. VisualSVN Server搭建SVN服务器<转>

    使用 VisualSVN Server来搭建本地的代码管理库是非常方便的.svn的那些“检查修改”.“代码版本自由回滚”.“版本日志”等等很多比较牛逼的功能. 在开发当中可谓是理想的开发助手.而且人脑 ...

  9. MVC的博客

    一个基于Asp.net MVC的博客类网站开源了!   背景说明: 大学时毕业设计作品,一直闲置在硬盘了,倒想着不如开源出来,也许会对一些人有帮助呢,而且个人觉得这个网站做得还是不错了,毕竟是花了不少 ...

  10. C向C++改造

    步骤: 1. 把c文件后缀名换成cpp2. Android.mk文件中的hello.c也要换成hello.cpp3. c++的使用的环境变量结构体中,访问了c使用的结构体的函数指针,函数名全部都是一样 ...