关键代码如下:

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. swift3.0之后的Error处理

    在之前的版本中,Swift中Error与OC中NSError没有关系.但是现在两者可以互相强转. 我们看看两者的区别:Error是一个实现Error协议的枚举或者结构体,对外能够获取的具体信息只有ra ...

  2. 用MFC(C++)实现拼音搜索

    2015年4月1日更新: 我在github开源了Objective-C版的拼音搜索项目,感兴趣的可以去看看: OC版拼音搜索 最近项目需要实现按照拼音搜索资源.在网上找了一下,这方面的东西太少了. J ...

  3. 主流服务器apache,iis,tomcat,jboss,resion,weblogic,websphere的区别

    在互联网高速发展的今天,不同种类的网站大量涌现,每个人都在享受着网络服务带来的便利.而创建自己的个性化网站的门槛不断降低.从事网站架构,这种当年的绝对“”高科技“”绝活.也从it人员的专利“”沦落“” ...

  4. G. (Zero XOR Subset)-less(线性基)

    题目链接:http://codeforces.com/contest/1101/problem/G 题目大意:给你n个数,然后让你把这n个数分成尽可能多的集合,要求,每个集合的值看做这个集合所有元素的 ...

  5. Twisted框架

    Twisted是一个事件驱动型的网络模型.时间驱动模型编程是一种范式,这里程序的执行流由外部决定.特点是:包含一个事件循环,当外部事件发生时,使用回调机制来触发相应的处理. 线程模式: 1.单线程同步 ...

  6. pixel像素基础

    地址:http://www.imooc.com/video/9564 dp(安卓),pt(iphone)是物理像素 ppi是由物理像素确定的 一英寸内有多少个像素渲染,ppi越高,图片越清晰 1px ...

  7. python生成器、装饰器、正则

    包子来了[4],被[mayun]吃了! 包子来了[4],被[mahuateng]吃了! 做了两个包子 包子来了[5],被[mayun]吃了! 包子来了[5],被[mahuateng]吃了! 做了两个包 ...

  8. Archlinux系统配置学习笔记(一)

    本文档是有关Archlinux系统配置的学习笔记,参考和学习的是Archlinux官方网站上的相应文档:General Recommendations. 这里的配置主要是针对按照官方网站上的文档刚刚完 ...

  9. vSphere Web Client 6.5 如何上传ISO文件

    vSphere Web Client 6.5 如何上传ISO文件? 1,先开启SSH功能. WEB登陆管理端,选中一台主机,配置-安全配置文件-服务编辑-SSH项-起动. 2,用SFTP上传ISO文件 ...

  10. #JS 前端javascript规范文档

    一.规范目的 为提高团队协作效率,便于前端后期优化维护,输出高质量的文档. 二.基本准则 符合web标准,结构表现行为分离,兼容性优良.页面性能方面,代码要求简洁明了有序, 尽可能的减小服务器负载,保 ...