简介
upload4j是一款轻量级http文件上传框架,使用简单,实现高效,功能专一,摆脱传统http文件上传框架的繁琐。
upload4j的诞生并不是为了解决所有上传需求,而是专注于基础通用需求。
upload4j带来的
· 实现直接文件流上传、html表单流上传两种上传模式。
· io操作部分采用nio机制。
· 支持文件过滤,并且基于二进制文件头进行过滤,而非传统的文件扩展名过滤。
· 上传文件大小不受内存大小限制。
upload4j给不了的
· 文件上传进度。
· 批量上传。
upload4j使用示例
直接文件流上传
启用过滤功能
1//过滤器2MetaFilter metaFilter =newMetaFilter();3metaFilter.add(".jpg", "FFD8FF");//允许的文件类型,params: 文件后缀名, 文件头十六进制字符串4Map<String, String> metaMap =newHashMap<String, String>();5metaMap.put(".png", "89504E47");6metaFilter.fromMap(metaMap);//批量添加允许的文件类型78//配置9MetaFilterConfig metaFilterConfig = MetaFilterConfig.custom().setBufferSize(8192)//默认8192B,单位B10.setMaxFileSize(1024 * 1024)//限制文件最大1M,单位B11.setFilter(metaFilter)//过滤器12.setRequest(request)//从request对象的body中读取文件流13.setFileNameWithoutSuffix("123")//保存文件名(不带扩展名,自动识别)14.setSavePath("/home/user1/upload/img/2015/09/24/");//保存路径1516//上传17StreamUpload streamUpload =newStreamUpload();18SimpleUploadResponse response =streamUpload.upload(metaFilterConfig);1920//上传结果21if(response.isSuccess()){//成功22//获取文件保存完整路径23response.getFilePath();24//......25}else{//失败26//判断失败是否可控27if(response.getException() ==null){//可控28//获取失败原因29response.getErrmsg();30//......31}else{//不可控32//直接抛出异常33throwresponse.getException();34}35}
不启用过滤功能
1//配置2StreamConfig streamConfig = StreamConfig.custom().setBufferSize(8192)//默认8192B,单位B3.setMaxFileSize(1024 * 1024)//限制文件最大1M,单位B4.setRequest(request)//从request对象的body中读取文件流5.setFileNameWithSuffix("123.jpg")//保存完整文件名(带扩展名)6.setSavePath("/home/user1/upload/img/2015/09/24/");//保存路径78//上传9StreamUpload streamUpload =newStreamUpload();10SimpleUploadResponse response =streamUpload.upload(streamConfig);1112//上传结果13if(response.isSuccess()){//成功14//获取文件保存完整路径15response.getFilePath();16//......17}else{//失败18//判断失败是否可控19if(response.getException() ==null){//可控20//获取失败原因21response.getErrmsg();22//......23}else{//不可控24//直接抛出异常25throwresponse.getException();26}27}
html表单流上传
启用过滤功能
1//过滤器2MetaFilter metaFilter =newMetaFilter();3metaFilter.add(".jpg", "FFD8FF");//允许的文件类型,params: 文件后缀名, 文件头十六进制字符串4Map<String, String> metaMap =newHashMap<String, String>();5metaMap.put(".png", "89504E47");6metaFilter.fromMap(metaMap);//批量添加允许的文件类型78//配置9MetaFilterConfig metaFilterConfig = MetaFilterConfig.custom().setBufferSize(8192)//默认8192B,单位B10.setMaxFileSize(1024 * 1024)//限制文件最大1M,单位B11.setFilter(metaFilter)//过滤器12.setRequest(request)//从request对象的body中读取文件流13.setFileNameWithoutSuffix("123")//保存文件名(不带扩展名,自动识别)14.setSavePath("/home/user1/upload/img/2015/09/24/");//保存路径1516//上传17FormUpload formUpload =newFormUpload();18SimpleUploadResponse response =formUpload.upload(metaFilterConfig);1920//上传结果21if(response.isSuccess()){//成功22//获取文件保存完整路径23response.getFilePath();24//......25}else{//失败26//判断失败是否可控27if(response.getException() ==null){//可控28//获取失败原因29response.getErrmsg();30//......31}else{//不可控32//直接抛出异常33throwresponse.getException();34}35}
不启用过滤功能
1//配置2FormConfig formConfig = FormConfig.custom().setBufferSize(8192)//默认8192B,单位B3.setMaxFileSize(1024 * 1024)//限制文件最大1M,单位B4.setRequest(request)//从request对象的body中读取文件流5.setFileNameWithoutSuffix("123")//保存文件名(不带扩展名,自动提取)6.setSavePath("/home/user1/upload/img/2015/09/24/");//保存路径78//上传9FormUpload formUpload =newFormUpload();10SimpleUploadResponse response =formUpload.upload(formConfig);1112//上传结果13if(response.isSuccess()){//成功14//获取文件保存完整路径15response.getFilePath();16//......17}else{//失败18//判断失败是否可控19if(response.getException() ==null){//可控20//获取失败原因21response.getErrmsg();22//......23}else{//不可控24//直接抛出异常25throwresponse.getException();26}27}
浏览upload4j项目