你的位置:首页 > Java教程

[Java教程]upload4j安全、高效、易用的java http文件上传框架


简介

     

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

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

 

upload4j带来的

     

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

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

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

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

 

upload4j给不了的

     

     ·  文件上传进度。

     ·  批量上传。

 

upload4j使用示例

 

直接文件流上传

 

启用过滤功能

 

 1 // 过滤器 2 MetaFilter metaFilter = new MetaFilter(); 3 metaFilter.add(".jpg", "FFD8FF"); // 允许的文件类型,params: 文件后缀名, 文件头十六进制字符串 4 Map<String, String> metaMap = new HashMap<String, String>(); 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<String, String> metaMap = new HashMap<String, String>(); 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 }

 

 

浏览upload4j项目