博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
servlet上传文件接收工具
阅读量:6524 次
发布时间:2019-06-24

本文共 2939 字,大约阅读时间需要 9 分钟。

hot3.png

 

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
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
formItems = upload.parseRequest(request); if (formItems != null && formItems.size() > 0) { // 迭代表单数据 Map
reMap = new HashMap<>(); List
> reList = new ArrayList<>(); Map
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
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

你可能感兴趣的文章
钓鱼邮件***防范指南
查看>>
session_start()放置位置的不正确引发的ROOT常量 未定义的错误
查看>>
如何设定VDP同时备份的任务数?
查看>>
ipsec的***在企业网中的经典应用
查看>>
过来人谈《去360还是留在百度?》
查看>>
mysql备份工具innobackupex,xtrabackup-2.1安装,参数详解
查看>>
【复制】slave筛选复制之二(create/drop table语句)
查看>>
Movie Store OpenCart 自适应主题模板 ABC-0249
查看>>
mytop-MySQL监控工具
查看>>
RedHat linux YUM本地制作源
查看>>
apache端口占用问题
查看>>
本地Office Project计划表同步到SharePoint2013任务列表的权限问题
查看>>
Windows2008 R2 GAC权限问题
查看>>
洛谷——P1469 找筷子
查看>>
VI nagios
查看>>
codevs——1267 老鼠的旅行(棋盘DP)
查看>>
几句话就能让你明白:网络地址转换(NAT)
查看>>
TCP三次握手及tcpdump抓包
查看>>
Python正则表达式
查看>>
html5 Canvas API
查看>>