//先编写servler
package com.guinea.web.servlet;import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.PrintWriter;
import java.util.Collection;/*** @author: shiky* @describle:* @dateTime: 2016/2/1*/
public class UploadifyServlet extends HttpServlet {private static final long serialVersionUID = 3371896840232072160L;@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) {System.out.println("--------阿里路亚---咪咪卡特----------");try {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");//获取上传的文件集合Collection<Part> parts = request.getParts();if (null != parts && parts.size() > 0) {//上传单个文件if (parts.size() == 1) {//Servlet3.0将multipart/form-data的POST请求封装成Part,通过Part对上传的文件进行操作。//Part part = parts[0];//从上传的文件集合中获取Part对象Part part = request.getPart("mefile");//通过表单file控件(<input type="file" name="file">)的名字直接获取Part对象//Servlet3没有提供直接获取文件名的方法,需要从请求头中解析出来//获取请求头,请求头的格式:form-data; name="file"; filename="snmp4j--api.zip"String header = part.getHeader("content-disposition");//获取文件名String fileName = getFileName(header);System.out.println("fileName:"+fileName);//把文件写到指定路径part.write(fileName);} else {//上传多个文件for (Part part : parts) {//循环处理上传的文件//获取请求头,请求头的格式:form-data; name="file"; filename="snmp4j--api.zip"String header = part.getHeader("content-disposition");//获取文件名String fileName = getFileName(header);//把文件写到指定路径part.write(fileName);System.out.println("fileName - somes:"+fileName);}}PrintWriter out = response.getWriter();out.println("succ");out.flush();out.close();}} catch (Exception e) {e.printStackTrace();}}/*** 根据请求头解析出文件名* 请求头的格式:火狐和google浏览器下:form-data; name="file"; filename="snmp4j--api.zip"* IE浏览器下:form-data; name="file"; filename="E:\snmp4j--api.zip"** @param header 请求头* @return 文件名*/public String getFileName(String header) {/*** String[] tempArr1 = header.split(";");代码执行完之后,在不同的浏览器下,tempArr1数组里面的内容稍有区别* 火狐或者google浏览器下:tempArr1={form-data,name="file",filename="snmp4j--api.zip"}* IE浏览器下:tempArr1={form-data,name="file",filename="E:\snmp4j--api.zip"}*/String[] tempArr1 = header.split(";");/***火狐或者google浏览器下:tempArr2={filename,"snmp4j--api.zip"}*IE浏览器下:tempArr2={filename,"E:\snmp4j--api.zip"}*/String[] tempArr2 = tempArr1[2].split("=");//获取文件名,兼容各种浏览器的写法String fileName = tempArr2[1].substring(tempArr2[1].lastIndexOf("\\") + 1).replaceAll("\"", "");return fileName;}
}

再配置web.xml

<!-- servlet文件上传
   max-file-size 最大文件上传大小 1024*1024*200
   max-request-size 每次上传最大文件大小 1024*1024*88
   location文件路径
      -->
<servlet>
  <servlet-name>uploadifyServlet</servlet-name>
  <servlet-class>com.guinea.web.servlet.UploadifyServlet</servlet-class>
  <async-supported>true</async-supported>
  <multipart-config>
    <location>D:\tessdata\mefiles</location>
    <max-file-size>209715200</max-file-size>
    <max-request-size>92274688</max-request-size>
  </multipart-config>
</servlet>
<servlet-mapping>
  <servlet-name>uploadifyServlet</servlet-name>
  <url-pattern>/uploadify/UploadifyServlet</url-pattern>
</servlet-mapping>

界面:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title></title>
</head>
<body>
<form action="${path}/uploadify/UploadifyServlet" method="post" enctype="multipart/form-data">上传文件:  <input type="file" name="mefile"><br><input type="submit" value="上传">
</form>
</body>
</html>

然后一个基于servlet3的上传就OK了

servlet3 文件上传相关推荐

  1. Servlet3.0 multipart 文件上传技术

    Servlet3.0 javaConfig配置 传统的servlet都是在web.xml中配置,从Servlet 3.0开始提供了ServletContainerInitializer接口,允许使用代 ...

  2. Spring MVC-09循序渐进之文件上传(基于Servlet3.0+Html5客户端上传文件)

    示例 测试 源码 虽然Servlet3.0+中上传文件,我们在服务端编程即可非常容易,但是用户体验却不是非常友好.单独的一个HTML表单并不能显示进度条,或者显示已经成功上传的文件数量. 不管是Jav ...

  3. Spring MVC-09循序渐进之文件上传(基于Servlet3.0+内置功能)

    概述 测试 源码 概述 Spring MVC-09循序渐进之文件上传(基于Apache Commons FileUpload) 上篇博文我们说了基于Apache Commons FileUpload的 ...

  4. Servlet3.0学习总结(三)——基于Servlet3.0的文件上传

    在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileupload组件,在Servlet3.0中提供了对文件上传的原生支持,我们不 ...

  5. Springmvc文件上传(servlet3.0)/下载(ssm)以及坑点

    前言 (补充:再linux服务器上可能没用创建文件的权限,那就需要找到文件夹给权限,比如我的chmod -R 777 /home/tomcat/apache-tomcat-default/webapp ...

  6. 【Servlet3.0新特性】第03节_文件上传

    这是一个Web Project 首先是web.xml <?xml version="1.0" encoding="UTF-8"?> <web- ...

  7. springmvc与Servlet3.0不依赖common包实现文件上传

    Servlet3.0以上的版本不再需要第三方组件Commons.io和commons-fileupload,可以使用@MultipartConfig注解在Servlet上进行配置上传,也可以在web. ...

  8. servlet3多文件上传_Servlet 3文件上传– @MultipartConfig,部分

    servlet3多文件上传 Today we will look into Servlet 3 File Upload Example using @MultipartConfig annotatio ...

  9. Java Servlet3.0使用getPart/getParts实现单文件和多文件上传

    一.使用工具: (1)Firefox浏览器 (2)Eclipse 二.实现单文件上传 (1)Servlet 源码 package com.servlet;import java.io.IOExcept ...

  10. 学习日志day41(2021-09-03)(1、文件的上传 2、文件的查看 3、文件的下载 4、使用工具类上传文件 5、基于servlet3.0以上的文件上传 )

    学习内容:学习JavaWeb(Day41) 1.文件的上传 2.文件的查看 3.文件的下载 4.使用工具类上传文件 5.基于servlet3.0以上的文件上传 1.文件的上传 (1)实现文件的上传需要 ...

最新文章

  1. 使用谷歌jquery库文件的理由
  2. 重装IDEA再也不愁了,一招搞定同步个人配置!
  3. java 视图对象转换,使用spring boot开发时java对象和Json对象转换的问题_JavaScript_网络编程...
  4. 10岁吊打职业教师的天才,仅用10篇论文称霸数学界160多年,40岁英年早逝却迄今无人超越...
  5. 华为智能计算发布FusionServer Pro智能服务器
  6. Python错误,pip安装包或更新时因超时而报错误
  7. 【项目调研+论文阅读】基于医学文献的实体抽取(NER)方法研究 day5
  8. 吴恩达|机器学习作业7.1.主成分分析(PCA)
  9. Bluetooth的profile总结
  10. nodejs实现redis ORM
  11. oppor17刷鸿蒙系统,oppo a5刷机包下载
  12. 微信小程序 --- 物流快递查询
  13. windows上编译,使用libtorrent
  14. python如何输入整数求和_Python如何输入数字并求和
  15. 个人域名备案详细流程(图文并茂)
  16. 杨国福和张亮“天地对决” 麻辣烫江湖要变天了吗?
  17. 外贸术语(FOB,CIF,CFR,FCA,CPT,CIP,EXW、FAS、DAF、DES、DEQ、DDU、DDP)
  18. java自动发图文微博_使用node搭建自动发图文微博机器人的方法
  19. 情境领导者-第二章、领导风格
  20. 资本市场低迷:快狗打车上市首日跌22% 市值仍超百亿港元

热门文章

  1. 2019年QQ透明头像与QQ动态头像设置方法
  2. FFmpeg音视频播放器实现
  3. 412:Cadence使用—— Padstack Editor焊盘设计
  4. 一次 ASAN 找不到 symbolizer 问题的分析与解决
  5. php的变量命名规则
  6. shopify 与国内第三方建站服务平台的比较(店匠、shopline、shopyy、ueeshop)
  7. 魔兽争霸显示比例调整的问题
  8. 用php的定界符EOT需要注意的地方
  9. 运输业的EDI是如何运作的?
  10. 360 技术岗秋招笔试原题(2022届)