框架中如何根据fileupload工具包实现文件上传功能
工具包
Apache-fileupload.jar – 文件上传核心包。
Apache-commons-io.jar – 这个包是fileupload的依赖包。同时又是一个工具包。
代码
/*获取tomcat的work目录,作为上传时存放的临时路径(超过最大值时才存放)*/
File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir"); /**
* DiskFileItemFactory构造的两个参数
* 第一个参数:sizeThreadHold - 设置缓存(内存)保存多少字节数据,默认为10240字节,即10K
* 如果一个文件没有大于10K,则直接使用内存直接保存成文件就可以了。
* 如果一个文件大于10K,就需要将文件先保存到临时目录中去。
* 第二个参数 File 是指临时目录位置 - 可以不用tomcat的work目录可以用任意一个目录
*/
DiskFileItemFactory fileItemFactory = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, repository);
servletFileUpload = new ServletFileUpload(fileItemFactory); int uploadLimit = ConfigHelper.getAppUploadLimit(); //获取文件上传限制默认为10(M)
if (uploadLimit != 0){
servletFileUpload.setFileSizeMax(uploadLimit*1024*1024); //设置单文件最大大小为10M
} /*解析request*/
Map<String,List<FileItem>> fileItemListMap = servletFileUpload.parseParameterMap(request); //将request转换为Map
if (CollectionUtil.isNotEmpty(fileItemListMap)){
for (Map.Entry<String,List<FileItem>> fileItemListEntry : fileItemListMap.entrySet()){
String fieldName = fileItemListEntry.getKey(); //获取表单字段名
List<FileItem> fileItemList = fileItemListEntry.getValue(); if (CollectionUtil.isNotEmpty(fileItemListMap)){
for (FileItem fileItem:fileItemList){
if (fileItem.isFormField()){ //如果是表单字段 }else{ //如果是文件
String fileName = FileUtil.getRealFileName(new String(fileItem.getName().getBytes(),"UTF-8")); //获取文件名
if (StringUtil.isNotEmpty(fileName)){ //如果文件名不为空
long fileSize = fileItem.getSize(); //获取文件大小
String contentType = fileItem.getContentType(); //获取文件类型
InputStream inputStream = fileItem.getInputStream(); //获取文件输入流
fileParamList.add(new FileParam(fieldName,fileName,fileSize,contentType,inputStream)); //实例化一个文件参数并加到文件参数集合中去
}
}
}
}
}
}
框架中如何根据fileupload工具包实现文件上传功能的更多相关文章
- .Net语言 APP开发平台——Smobiler学习日志:快速实现应用中的图片、声音等文件上传功能
最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 样式一 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的&qu ...
- 在EasyUI项目中使用FileBox控件实现文件上传处理
我在较早之前的随笔<基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用>Web框架介绍中介绍了基于Uploadify的文件上传操作,免费版本用的是J ...
- 使用.NET框架、Web service实现Android的文件上传(二)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYUAAAKpCAIAAADcx6fPAAAgAElEQVR4nOydd1hT5+LHg1attbfr1t ...
- springmvc中使用文件上传功能
项目代码:https://github.com/PeiranZhang/springmvc-fileupload Servlet3.0之前使用文件上传功能 Servlet3.0之前需要使用common ...
- nodejs 实现简单的文件上传功能
首先需要大家看一下目录结构,然后开始一点开始我们的小demo. 文件上传总计分为三种方式: 1.通过flash,activeX等第三方插件实现文件上传功能. 2.通过html的form标签实现文件上传 ...
- 通过JSP+servlet实现文件上传功能
在TCP/IP中,最早出现的文件上传机制是FTP.它将文件由客户端到服务器的标准机制. 但是在JSP中不能使用FTP来上传文件,这是有JSP的运行机制所决定的. 通过为表单元素设置Method=&qu ...
- PHPCMS_V9 模型字段添加单文件上传功能
后台有“多文件上传”功能,但是对于有些情况,我们只需要上传一个文件,而使用多文件上传功能上传一个文件,而调用时调用一个文件URL太麻烦了. 使用说明: 1.打开phpcms\modules\conte ...
- 配置php.ini实现PHP文件上传功能
本文介绍了如何配置php.ini实现PHP文件上传功能.其中涉及到php.ini配置文件中的upload_tmp_dir.upload_max_filesize.post_max_size等选项,这些 ...
- MVC5:使用Ajax和HTML5实现文件上传功能
引言 在实际编程中,经常遇到实现文件上传并显示上传进度的功能,基于此目的,本文就为大家介绍不使用flash 或任何上传文件的插件来实现带有进度显示的文件上传功能. 基本功能:实现带有进度条的文件上传功 ...
随机推荐
- promise对象的使用
ES6中的promise的出现给我们很好的解决了回调地狱的问题,在使用ES5的时候,在多层嵌套回调时,写完的代码层次过多,很难进行维护和二次开发,ES6认识到了这点问题, 现在promise的使用,完 ...
- CAS Client集群环境的Session问题及解决方案 不能退出登录
casclient源代码下载链接:https://github.com/apereo/java-cas-client cas官网链接:https://www.apereo.org/projects/c ...
- Python: find the smallest and largest value
题目要求: Write a program that repeatedly prompts a user for integer numbers until the user enters 'done ...
- JavaScript运行机制详解
JavaScript运行机制详解 var test = function(){ alert("test"); } var test2 = function(){ alert(& ...
- jquery 重要知识点总结
jquery 重要知识点总结1.一组标签用一个ul来管理,每一个标签是ul中的一个li:标签下面的内容就是用div来管理2.跟在浮动元素(float)之后的元素会围绕着浮动元素,如果不希望有这种围绕, ...
- vue运行报错--dependency
ERROR Failed to compile with 1 errors 11:17:27 This dependency was not found: 解决方法:把报错所缺少的依赖都装上 如 xx ...
- 【BZOJ】3142: [Hnoi2013]数列
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3142 12年也有一个组合数学...(这几年的画风啊.... 考虑直接去做:DP? DP+容 ...
- java进程占用系统内存高,排查解决
转自:http://blog.51cto.com/chengxiaobai/2052530?cid=695076 故障:最近收到生产服务器的报警短信以及邮件,报警内容为:内存使用率高于70%. 使用t ...
- python 定时器
2s启动一个定时器: import threading import time def hello(name): print "hello %s\n" % name global ...
- Python—合并两个有序列表
def hb(list1,list2): result = [] while list1 and list2: ] < list2[]: result.append(list1[]) del l ...