servlet上传文件接收工具
2019独角兽企业重金招聘Python工程师标准>>>
utf-8编号,如果是其他编码的请自行替换里面的编码
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;/*** 上传文件接收工具 依赖 commons-fileupload commons-io* * @author thj**/
public class UpLoadFileReceiveUtils {private static final int MAX_FILE_SIZE = 1024 * 1024 * 40; // 40MB 设置最大文件上传值private static final int MAX_REQUEST_SIZE = 1024 * 1024 * 50; // 50MB// 设置最大请求值// (包含文件和表单数据)/*** 接收文件,返回文件地址 如果没接收成功,则返回null * files 上传的文件的集合【* 返回值包括 fileType 文件类型(暂不提供) fileSuffer* 文件后缀(暂不提供) fileOldName 原文件名 fileTemAddr 临时文件的地址 fileTemContent 临时文件内容* fileFieldName 上传文件时的字段名 fileSize 文件大小】* params 上传的参数集合* * @param request* @return*/public static Map<String,Object> receiveFile(HttpServletRequest request) {// 检测是否为多媒体上传if (!ServletFileUpload.isMultipartContent(request)) {// 如果不是则停止return null;}try {// 配置上传参数DiskFileItemFactory factory = new DiskFileItemFactory();// 设置内存临界值 - 超过后将产生临时文件并存储于临时目录中 默认起用临时保存文件factory.setSizeThreshold(0);// 设置临时存储目录factory.setRepository(new File(System.getProperty("java.io.tmpdir")));ServletFileUpload upload = new ServletFileUpload(factory);// 设置最大文件上传值upload.setFileSizeMax(MAX_FILE_SIZE);// 设置最大请求值 (包含文件和表单数据)upload.setSizeMax(MAX_REQUEST_SIZE);// 中文处理upload.setHeaderEncoding("UTF-8");// 解析请求的内容提取文件数据List<FileItem> formItems = upload.parseRequest(request);if (formItems != null && formItems.size() > 0) {// 迭代表单数据Map<String, Object> reMap = new HashMap<>();List<Map<String, Object>> reList = new ArrayList<>();Map<String, Object> params = new HashMap<>();for (FileItem item : formItems) {// 处理不在表单中的字段(不在表单中的字段就是文件)if (!item.isFormField()) {// 判断是否是文件long fileSize = item.getSize();if (!(fileSize > 0)) {// 如果文件为空,则size为0// size为0则不处理continue;}DiskFileItem dfi = (DiskFileItem) item;File f = dfi.getStoreLocation();Map<String, Object> fileInfo = new HashMap<>();fileInfo.put("fileOldName", item.getName());fileInfo.put("fileFieldName", item.getFieldName());fileInfo.put("fileTemAddr", f.getPath());fileInfo.put("fileSize", fileSize);fileInfo.put("fileTemContent", f);reList.add(fileInfo);}else {String value = item.getString();if (null != value && value.trim().length() > 0) {params.put(item.getFieldName(), item.getString());}}}if (!params.isEmpty()) {reMap.put("params", params);}if (!reList.isEmpty()) {reMap.put("files", reList);}if (reMap.isEmpty()) {return null;}else {return reMap;}}} catch (Exception ex) {System.err.println("接收文件失败");return null;}return null;}}
转载于:https://my.oschina.net/2892328252/blog/1526171
servlet上传文件接收工具相关推荐
- java flex 上传文件_使用Flex和java servlet上传文件
资源都是来自网上.本实例将展示使用Flex和java servlet上传文件. 事前准备就是到http://commons.apache.org 下载common-fileupload-1.1.1.j ...
- 上传文件到服务器并显示,J2EE如何实现Servlet上传文件到服务器并相应显示功能...
J2EE如何实现Servlet上传文件到服务器并相应显示功能 发布时间:2021-07-10 11:44:54 来源:亿速云 阅读:82 作者:小新 这篇文章将为大家详细讲解有关J2EE如何实现Ser ...
- Servlet上传文件和下载文件示例
Java Web应用程序中的文件上载和下载以及常见任务. 由于最近我写了很多有关Java servlet的文章 ,因此我想提供一个使用servlet上传和下载文件的示例示例. 用例 我们的用例是提供一 ...
- 原生Servlet 上传文件
依赖jar <dependency><groupId>commons-fileupload</groupId><artifactId>commons-f ...
- 七牛上传文件小工具v0.1
为什么80%的码农都做不了架构师?>>> 非常喜欢 七牛的存储,但是七牛也没有论坛,想找个小工具都很难.而官方的windows下的上传工具 qrsync虽然很强大,但是对于经常 ...
- java ee 上传文件_17.《JavaEE 学习笔记》Servlet 上传文件
功能介绍: 利用 Servlet 和表单提交,选择本地文件上传到服务器.上传的文件可以是文本文件或图像文件或任何文档,不能是文件夹. 需要引入的 jar 文件:commons-fileupload-1 ...
- 【Servlet】servlet上传文件
文章目录 1 添加jar包 2 编写上传文件的html页面 3 web.xml添加servlet配置信息 4 编写servlet类 5 显示信息 1 添加jar包 往lib目录下添加两个上传文件所需要 ...
- JSP利用servlet上传文件时的中文乱码问题
JSP处理乱码问题是一个痛苦的过程.这次servlet传送文件的乱码折腾了我至少两周. 总结如下: 1.第一类乱码: 就是文件传送过来的文件名等是乱码:但是servlet输出的页面汉字正常显示. 解决 ...
- java注解接收上传文件_SpringMVC 处理 multipart/data 请求实现文件上传
此前我们介绍过 HTTP 的 multipart/form-data 请求: 通过 multipart/form-data 请求可以方便的实现客户端到服务端的文件上传服务,但是默认的 Dispatch ...
最新文章
- ceph bluestore源码分析:非对齐写逻辑
- html不能超出div的宽度,DIV设置width后超出父元素应该如何解决
- android 开发清理内存_2019年 11 款最流行的安卓手机清理工具 总有一款适合你
- Linux/Ubuntu
- Codeforces Round #180 (Div. 2) A. Snow Footprints 贪心
- 【开发环境】PyCharm 配置 GitHub ( 从 GitHub 中 Clone 代码到 PyCharm 开发环境中 )
- CSS_DIV学习记录2(用背景颜色实现一个网页的完整布局)
- SAP S4HANA的product搜索的动态SQL语句的拼接原理
- ReactNative——打包发布
- 常用数据库端口号总结
- ps导出gif颜色不对_PS基础知识(1)
- 【CCF】201903-2 二十四点
- Dagoin之modelform组件
- JMETER 第一个实践例子
- HttpClient 使用证书访问https站点
- spark streaming限制吞吐
- Mybatis3.3.x技术内幕(十一):执行一个Sql命令的完整流程
- Adobe Dreamweaver Adobe Photoshop CS5 amtlib.dll 文件
- 红米 刷机 android7.1,有没有红米note3全网通的android7.1刷机包
- 初学者学习opengl是用红宝书好还是蓝宝书好?