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上传文件接收工具相关推荐

  1. java flex 上传文件_使用Flex和java servlet上传文件

    资源都是来自网上.本实例将展示使用Flex和java servlet上传文件. 事前准备就是到http://commons.apache.org 下载common-fileupload-1.1.1.j ...

  2. 上传文件到服务器并显示,J2EE如何实现Servlet上传文件到服务器并相应显示功能...

    J2EE如何实现Servlet上传文件到服务器并相应显示功能 发布时间:2021-07-10 11:44:54 来源:亿速云 阅读:82 作者:小新 这篇文章将为大家详细讲解有关J2EE如何实现Ser ...

  3. Servlet上传文件和下载文件示例

    Java Web应用程序中的文件上载和下载以及常见任务. 由于最近我写了很多有关Java servlet的文章 ,因此我想提供一个使用servlet上传和下载文件的示例示例. 用例 我们的用例是提供一 ...

  4. 原生Servlet 上传文件

    依赖jar <dependency><groupId>commons-fileupload</groupId><artifactId>commons-f ...

  5. 七牛上传文件小工具v0.1

    为什么80%的码农都做不了架构师?>>>    非常喜欢 七牛的存储,但是七牛也没有论坛,想找个小工具都很难.而官方的windows下的上传工具 qrsync虽然很强大,但是对于经常 ...

  6. java ee 上传文件_17.《JavaEE 学习笔记》Servlet 上传文件

    功能介绍: 利用 Servlet 和表单提交,选择本地文件上传到服务器.上传的文件可以是文本文件或图像文件或任何文档,不能是文件夹. 需要引入的 jar 文件:commons-fileupload-1 ...

  7. 【Servlet】servlet上传文件

    文章目录 1 添加jar包 2 编写上传文件的html页面 3 web.xml添加servlet配置信息 4 编写servlet类 5 显示信息 1 添加jar包 往lib目录下添加两个上传文件所需要 ...

  8. JSP利用servlet上传文件时的中文乱码问题

    JSP处理乱码问题是一个痛苦的过程.这次servlet传送文件的乱码折腾了我至少两周. 总结如下: 1.第一类乱码: 就是文件传送过来的文件名等是乱码:但是servlet输出的页面汉字正常显示. 解决 ...

  9. java注解接收上传文件_SpringMVC 处理 multipart/data 请求实现文件上传

    此前我们介绍过 HTTP 的 multipart/form-data 请求: 通过 multipart/form-data 请求可以方便的实现客户端到服务端的文件上传服务,但是默认的 Dispatch ...

最新文章

  1. ceph bluestore源码分析:非对齐写逻辑
  2. html不能超出div的宽度,DIV设置width后超出父元素应该如何解决
  3. android 开发清理内存_2019年 11 款最流行的安卓手机清理工具 总有一款适合你
  4. Linux/Ubuntu
  5. Codeforces Round #180 (Div. 2) A. Snow Footprints 贪心
  6. 【开发环境】PyCharm 配置 GitHub ( 从 GitHub 中 Clone 代码到 PyCharm 开发环境中 )
  7. CSS_DIV学习记录2(用背景颜色实现一个网页的完整布局)
  8. SAP S4HANA的product搜索的动态SQL语句的拼接原理
  9. ReactNative——打包发布
  10. 常用数据库端口号总结
  11. ps导出gif颜色不对_PS基础知识(1)
  12. 【CCF】201903-2 二十四点
  13. Dagoin之modelform组件
  14. JMETER 第一个实践例子
  15. HttpClient 使用证书访问https站点
  16. spark streaming限制吞吐
  17. Mybatis3.3.x技术内幕(十一):执行一个Sql命令的完整流程
  18. Adobe Dreamweaver Adobe Photoshop CS5 amtlib.dll 文件
  19. 红米 刷机 android7.1,有没有红米note3全网通的android7.1刷机包
  20. 初学者学习opengl是用红宝书好还是蓝宝书好?

热门文章

  1. excel快速填充_F4键,Excel中最强大的快捷键,没有之一
  2. java虚拟机之二虚拟机内存结构
  3. laravel引入自定义全局函数
  4. 第二节JVM JRE 和JDK介绍
  5. 知乎高赞 | Go 技术一面一般考哪些内容
  6. Go语言操作MySQL的基础知识
  7. mysql中常用的时间工具
  8. How to use wget to download mail archives?
  9. 不同浏览器input file样式不一样
  10. CCF认证训练行动路线图