import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.UUID;
import org.apache.commons.fileupload.FileItem;
/**
*
* @ClassName: FileItemHelper
* @description: 存放临时文件,此类仅支持文件较小,并且存放时间极短的文件,除此类型的文件请存放于硬盘。
* @author: QUINN
* @date: 2014年6月4日 上午10:47:53
* @version: V1.0
*
*/
public class FileItemHelper {
private FileItemHelper() {
}
// 临时文件存放时间 超时4分钟
private final int TIMEOUT = 1000 * 60 * 4;
private boolean isCheck = false;
private static FileItemHelper INSTANCE;
public static FileItemHelper getInstance() {
if (FileItemHelper.INSTANCE == null) {
synchronized (sync) {
if (FileItemHelper.INSTANCE == null)
FileItemHelper.INSTANCE = new FileItemHelper();
}
}
return FileItemHelper.INSTANCE;
}
// 线程锁对象
private static Object sync = 1;
public String putItem(FileItem item) {
synchronized (sync) {
String uuid = UUID.randomUUID().toString().replace("-", "");
datas.put(uuid, item);
timeouts.put(uuid, System.currentTimeMillis());
isCheck = true;
this.checkThread.start();
return uuid;
}
}
private Thread checkThread = new Thread() {
public void run() {
while (true) {
if (isCheck)
synchronized (sync) {
if (timeouts.isEmpty()) {
isCheck = false;
break;
}
long now = System.currentTimeMillis();
Iterator<String> ite = timeouts.keySet().iterator();
while (ite.hasNext()) {
String key = ite.next();
long time = timeouts.get(key);
if (now - time > TIMEOUT) {
datas.remove(key);
ite.remove();
}
}
}
try {
Thread.sleep(5 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
};
/**
*
*
* @Title: getFileItem
* @Description: 获取了FileItem后会自动删除
* @param: <p>
* @param key
* @param: <p>
* @return <p>
* @date: 2014年6月4日
* @return: FileItem
* @throws
*
*/
public FileItem getFileItem(String key) {
synchronized (sync) {
FileItem item = this.datas.get(key);
this.datas.remove(key);
this.timeouts.remove(key);
if (timeouts.isEmpty())
this.isCheck = false;
return item;
}
}
// 存文件
private Map<String, FileItem> datas = new HashMap<String, FileItem>();
// 超时时间
private Map<String, Long> timeouts = new HashMap<String, Long>();
}
分享到:
相关推荐
下面小编就为大家带来一篇浅谈FileItem类的常用方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
python库,解压后可用。 资源全名:file_item-1.0.0-py3-none-any.whl
// 得到文件上传工厂 FileItemFactory factory = new ... // 集合数据 : FileItem对象 注意: 每一个表单域 对应一个 FileItem对象(封装) List<FileItem> fileItemList = fileUpload.parseRequest(request);
目的:tomcat10版本导致List<FileItem> fileItems = sfu.parseRequest(request) 入参的HttpServletRequest必须为:import jakarta.servlet.http.HttpServletRequest; 运行cmd,再该目录下执行: 执行步骤:java -...
当上传文件大于缓冲区大小时, fileupload组件将使用临时文ServletFileUpload 负责处理上传的文件数据,并将表单中每个输入项封装成一个 FileItem 对象中。常用方法有: boolean isMultipartContent...
参考了phantomes的专栏,解决了其中的FileItem调用问题。 struts2真正实现上传下载完整源代码。 包含lib jar包
NULL 博文链接:https://qinya.iteye.com/blog/643084
FileUpload组件将页面提交的所有元素(普通form表单域,如text和文件域file)都看作一样的FileItem,这样上传页面提交的 request请求也就是一个FileItem的有序组合,FileUpload组件可以解析该request,并返回一个一个...
base64将文件(图片或其它)转码成字符串,将字符串还原成文件
if (fileItem == null || fileItem.isFormField()) { continue; } // 得到文件的完整路径 path = fileItem.getName(); // 得到文件的大小 size = fileItem.getSize(); if ("".equals(path) || size == 0) { out....
我们通常在lib文件夹中存放从外部引入的jar包 3、找到我们要引入的jar包,鼠标选中jar包,然后按住鼠标左键不放,把jar包拖到lib文件夹中。或先复制jar包,然后在lib文件夹上右击,选择复制。此时,打开选择框,...
if (fileItem == null || fileItem.isFormField()) { continue; } // 得到文件的完整路径 path = fileItem.getName(); // 得到文件的大小 size = fileItem.getSize(); if ("".equals(path) || size == 0) { ...
NULL 博文链接:https://weideming.iteye.com/blog/1229692
文件上传组件commons-fileupload用户指南文件上传组件commons-fileupload用户指南
文件管理器被写在一个单独的区域中,这意味着它可以完全独立于主项目。 这是最新更新的屏幕截图( 2018/08/08 ): 注意:该项目正在开发中,存在很多错误,因此您应该将其视为BETA版本。 入门 要让文件管理器...
FileItem item = (FileItem) iter.next(); // 忽略其他不是文件域的所有表单信息 if (!item.isFormField()) { String name = item.getName(); long size = item.getSize(); if ((name == null || name....
将Apache的commons-fileupload.jar放在应用程序的WEB-INF\lib下,即可使用。下面举例介绍如何使用它的文件上传功能。 所使用的fileUpload版本为1.2,环境为Eclipse3.3+MyEclipse6.0。FileUpload 是基于 Commons IO的...
将请求的字符集编码设置成项目中的编码,在ConnectorServlet.java和SimpleUploaderServlet.java两个文件中的DiskFileUpload upload = new DiskFileUpload();后面加入upload.setHeaderEncoding(encoding);告诉...
* 设置文件过滤器,不符合过滤器规则的将不被上传 * @param filter */ public void setFilter(UploadFileFilter filter) { this.filter = filter; } /** * 验证文件是否有效 * @param item * @return *...
jspsmartuploa.jar 是一个很好用的文件上传下载工具报。适合与小项目。里面有丰富的源码示例, 还有使用说明两份,非常...FileItem item = (FileItem) iter.next(); // 忽略其他不是文件域的所有表单信息 ..........