框架中如何根据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 或任何上传文件的插件来实现带有进度显示的文件上传功能. 基本功能:实现带有进度条的文件上传功 ...
随机推荐
- Python3基础 list extend 合并列表
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Flask学习【第4篇】:用Flask的扩展实现的简单的页面登录
from flask import Flask,render_template,request,redirect,session app = Flask(__name__,template_folde ...
- 用vim + xdebug 来追踪thinkphp的执行过程
tree命令的使用几个有实际应用的参数 -a 这是默认的 -d: 只显式目录, 不需要显式目录下的文件 -L: 列出显式的深度. 当前目录下的所有东西为第一级... 在tp下, 有多个Common但是 ...
- 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T5(思维)
还是dfs? 好像自己写的有锅 过不去 看了题解修改了才过qwq #include <cstdio> #include <algorithm> #include <cst ...
- 剥开比原看代码11:比原是如何通过接口/create-account创建帐户的
作者:freewind 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchai ...
- ExceptionLogger
应用1:webconfig.cs中设置 public static class WebApiConfig { public static void Register(HttpConfiguration ...
- 51nod 1351 吃点心(贪心)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1351 题意: 思路: 要么先选low值大的,要么先选high值大的,分两 ...
- Ubuntu下codeblocks不能自动缩进的问题
如果在codeblocks中设置了自动缩进但是没有效果的话,在终端中执行sudo apt-get install codeblocks-contrib命令.
- arcgis 要素服务增删改查
两种方式: 第一种 要素服务的增删改操作,在ArcGIS API for JS中给我们提供了三个类用于要素的增Add,删Delete,改Update 添加draw和要素服务 //用于操作的要素图层,注 ...
- c代码,输出i,j,k互不相同的三位数
#include <stdio.h> int main() { int i,j,k; printf("\n"); for(i=1;i<5;i++){ for(j= ...