upload4j安全、高效、易用的javahttp文件上传框架

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

简介

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项目

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航