博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
upload4j安全、高效、易用的java http文件上传框架
阅读量:5773 次
发布时间:2019-06-18

本文共 5046 字,大约阅读时间需要 16 分钟。

简介

     

     upload4j是一款轻量级http文件上传框架,使用简单,实现高效,功能专一,摆脱传统http文件上传框架的繁琐。 

     upload4j的诞生并不是为了解决所有上传需求,而是专注于基础通用需求。  

 

upload4j带来的

     

     ·  实现直接文件流上传、html表单流上传两种上传模式。

     ·  io操作部分采用nio机制。

     ·  支持文件过滤,并且基于二进制文件头进行过滤,而非传统的文件扩展名过滤。

     ·  上传文件大小不受内存大小限制。

 

upload4j给不了的

     

     ·  文件上传进度。

     ·  批量上传。

 

upload4j使用示例

 

直接文件流上传

 

启用过滤功能

 

1 // 过滤器 2 MetaFilter metaFilter = new MetaFilter(); 3 metaFilter.add(".jpg", "FFD8FF");  // 允许的文件类型,params: 文件后缀名, 文件头十六进制字符串 4 Map
metaMap = new HashMap
(); 5 metaMap.put(".png", "89504E47"); 6 metaFilter.fromMap(metaMap); // 批量添加允许的文件类型 7 8 // 配置 9 MetaFilterConfig 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/"); // 保存路径15 16 // 上传17 StreamUpload streamUpload = new StreamUpload();18 SimpleUploadResponse response = streamUpload.upload(metaFilterConfig);19 20 // 上传结果21 if(response.isSuccess()){ // 成功22 // 获取文件保存完整路径23 response.getFilePath();24 // ......25 }else{ // 失败26 // 判断失败是否可控27 if(response.getException() == null){ // 可控28 // 获取失败原因29 response.getErrmsg();30 // ......31 }else{ // 不可控32 // 直接抛出异常33 throw response.getException();34 }35 }

 

不启用过滤功能

 

1 // 配置 2 StreamConfig streamConfig = StreamConfig.custom().setBufferSize(8192)  // 默认8192B,单位B 3                                                  .setMaxFileSize(1024 * 1024)  // 限制文件最大1M,单位B 4                                                  .setRequest(request)  // 从request对象的body中读取文件流 5                                                  .setFileNameWithSuffix("123.jpg")  // 保存完整文件名(带扩展名) 6                                                  .setSavePath("/home/user1/upload/img/2015/09/24/");  // 保存路径 7  8 // 上传 9 StreamUpload streamUpload = new StreamUpload();10 SimpleUploadResponse response = streamUpload.upload(streamConfig);11 12 // 上传结果13 if(response.isSuccess()){  // 成功14     // 获取文件保存完整路径15     response.getFilePath();16     // ......17 }else{  // 失败18     // 判断失败是否可控19     if(response.getException() == null){  // 可控20         // 获取失败原因21         response.getErrmsg();22         // ......23     }else{  // 不可控24         // 直接抛出异常25         throw response.getException();26     }27 }

 

html表单流上传

 

启用过滤功能

 

1 // 过滤器 2 MetaFilter metaFilter = new MetaFilter(); 3 metaFilter.add(".jpg", "FFD8FF");  // 允许的文件类型,params: 文件后缀名, 文件头十六进制字符串 4 Map
metaMap = new HashMap
(); 5 metaMap.put(".png", "89504E47"); 6 metaFilter.fromMap(metaMap); // 批量添加允许的文件类型 7 8 // 配置 9 MetaFilterConfig 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/"); // 保存路径15 16 // 上传17 FormUpload formUpload = new FormUpload();18 SimpleUploadResponse response = formUpload.upload(metaFilterConfig);19 20 // 上传结果21 if(response.isSuccess()){ // 成功22 // 获取文件保存完整路径23 response.getFilePath();24 // ......25 }else{ // 失败26 // 判断失败是否可控27 if(response.getException() == null){ // 可控28 // 获取失败原因29 response.getErrmsg();30 // ......31 }else{ // 不可控32 // 直接抛出异常33 throw response.getException();34 }35 }

 

不启用过滤功能

 

1 // 配置 2 FormConfig formConfig = FormConfig.custom().setBufferSize(8192)  // 默认8192B,单位B 3                                                  .setMaxFileSize(1024 * 1024)  // 限制文件最大1M,单位B 4                                                  .setRequest(request)  // 从request对象的body中读取文件流 5                                                  .setFileNameWithoutSuffix("123")  // 保存文件名(不带扩展名,自动提取) 6                                                  .setSavePath("/home/user1/upload/img/2015/09/24/");  // 保存路径 7  8 // 上传 9 FormUpload formUpload = new FormUpload();10 SimpleUploadResponse response = formUpload.upload(formConfig);11 12 // 上传结果13 if(response.isSuccess()){  // 成功14     // 获取文件保存完整路径15     response.getFilePath();16     // ......17 }else{  // 失败18     // 判断失败是否可控19     if(response.getException() == null){  // 可控20         // 获取失败原因21         response.getErrmsg();22         // ......23     }else{  // 不可控24         // 直接抛出异常25         throw response.getException();26     }27 }

 

 

 

转载地址:http://dvaux.baihongyu.com/

你可能感兴趣的文章
2018年内蒙古外贸首次突破1000亿元
查看>>
CTOR有助于BCH石墨烯技术更上一层楼
查看>>
被遗忘的CSS
查看>>
Webpack中的sourcemap以及如何在生产和开发环境中合理的设置sourcemap的类型
查看>>
做完小程序项目、老板给我加了6k薪资~
查看>>
java工程师linux命令,这篇文章就够了
查看>>
关于React生命周期的学习
查看>>
webpack雪碧图生成
查看>>
搭建智能合约开发环境Remix IDE及使用
查看>>
Spring Cloud构建微服务架构—服务消费基础
查看>>
RAC实践采坑指北
查看>>
runtime运行时 isa指针 SEL方法选择器 IMP函数指针 Method方法 runtime消息机制 runtime的使用...
查看>>
LeetCode36.有效的数独 JavaScript
查看>>
Scrapy基本用法
查看>>
PAT A1030 动态规划
查看>>
自制一个 elasticsearch-spring-boot-starter
查看>>
软件开发学习的5大技巧,你知道吗?
查看>>
java入门第二季--封装--什么是java中的封装
查看>>
【人物志】美团前端通道主席洪磊:一位产品出身、爱焊电路板的工程师
查看>>
一份关于数据科学家应该具备的技能清单
查看>>