servlet3 文件上传
//先编写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 文件上传相关推荐
- Servlet3.0 multipart 文件上传技术
Servlet3.0 javaConfig配置 传统的servlet都是在web.xml中配置,从Servlet 3.0开始提供了ServletContainerInitializer接口,允许使用代 ...
- Spring MVC-09循序渐进之文件上传(基于Servlet3.0+Html5客户端上传文件)
示例 测试 源码 虽然Servlet3.0+中上传文件,我们在服务端编程即可非常容易,但是用户体验却不是非常友好.单独的一个HTML表单并不能显示进度条,或者显示已经成功上传的文件数量. 不管是Jav ...
- Spring MVC-09循序渐进之文件上传(基于Servlet3.0+内置功能)
概述 测试 源码 概述 Spring MVC-09循序渐进之文件上传(基于Apache Commons FileUpload) 上篇博文我们说了基于Apache Commons FileUpload的 ...
- Servlet3.0学习总结(三)——基于Servlet3.0的文件上传
在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileupload组件,在Servlet3.0中提供了对文件上传的原生支持,我们不 ...
- Springmvc文件上传(servlet3.0)/下载(ssm)以及坑点
前言 (补充:再linux服务器上可能没用创建文件的权限,那就需要找到文件夹给权限,比如我的chmod -R 777 /home/tomcat/apache-tomcat-default/webapp ...
- 【Servlet3.0新特性】第03节_文件上传
这是一个Web Project 首先是web.xml <?xml version="1.0" encoding="UTF-8"?> <web- ...
- springmvc与Servlet3.0不依赖common包实现文件上传
Servlet3.0以上的版本不再需要第三方组件Commons.io和commons-fileupload,可以使用@MultipartConfig注解在Servlet上进行配置上传,也可以在web. ...
- servlet3多文件上传_Servlet 3文件上传– @MultipartConfig,部分
servlet3多文件上传 Today we will look into Servlet 3 File Upload Example using @MultipartConfig annotatio ...
- Java Servlet3.0使用getPart/getParts实现单文件和多文件上传
一.使用工具: (1)Firefox浏览器 (2)Eclipse 二.实现单文件上传 (1)Servlet 源码 package com.servlet;import java.io.IOExcept ...
- 学习日志day41(2021-09-03)(1、文件的上传 2、文件的查看 3、文件的下载 4、使用工具类上传文件 5、基于servlet3.0以上的文件上传 )
学习内容:学习JavaWeb(Day41) 1.文件的上传 2.文件的查看 3.文件的下载 4.使用工具类上传文件 5.基于servlet3.0以上的文件上传 1.文件的上传 (1)实现文件的上传需要 ...
最新文章
- 使用谷歌jquery库文件的理由
- 重装IDEA再也不愁了,一招搞定同步个人配置!
- java 视图对象转换,使用spring boot开发时java对象和Json对象转换的问题_JavaScript_网络编程...
- 10岁吊打职业教师的天才,仅用10篇论文称霸数学界160多年,40岁英年早逝却迄今无人超越...
- 华为智能计算发布FusionServer Pro智能服务器
- Python错误,pip安装包或更新时因超时而报错误
- 【项目调研+论文阅读】基于医学文献的实体抽取(NER)方法研究 day5
- 吴恩达|机器学习作业7.1.主成分分析(PCA)
- Bluetooth的profile总结
- nodejs实现redis ORM
- oppor17刷鸿蒙系统,oppo a5刷机包下载
- 微信小程序 --- 物流快递查询
- windows上编译,使用libtorrent
- python如何输入整数求和_Python如何输入数字并求和
- 个人域名备案详细流程(图文并茂)
- 杨国福和张亮“天地对决” 麻辣烫江湖要变天了吗?
- 外贸术语(FOB,CIF,CFR,FCA,CPT,CIP,EXW、FAS、DAF、DES、DEQ、DDU、DDP)
- java自动发图文微博_使用node搭建自动发图文微博机器人的方法
- 情境领导者-第二章、领导风格
- 资本市场低迷:快狗打车上市首日跌22% 市值仍超百亿港元