java上传下载框架_GitHub - iyangyuan/upload4j: 安全、高效、易用的java http文件上传框架...

简介

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

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

upload4j带来的

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

io操作部分采用nio机制。

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

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

upload4j给不了的

文件上传进度。

批量上传。

upload4j使用示例

直接文件流上传

启用过滤功能

// 过滤器

MetaFilter metaFilter = new MetaFilter();

metaFilter.add(".jpg", "FFD8FF"); // 允许的文件类型,params: 文件后缀名, 文件头十六进制字符串

Map metaMap = new HashMap();

metaMap.put(".png", "89504E47");

metaFilter.fromMap(metaMap); // 批量添加允许的文件类型

// 配置

MetaFilterConfig metaFilterConfig = MetaFilterConfig.custom().setBufferSize(8192) // 默认8192B,单位B

.setMaxFileSize(1024 * 1024) // 限制文件最大1M,单位B

.setFilter(metaFilter) // 过滤器

.setRequest(request) // 从request对象的body中读取文件流

.setFileNameWithoutSuffix("123") // 保存文件名(不带扩展名,自动识别)

.setSavePath("/home/user1/upload/img/2015/09/24/"); // 保存路径

// 上传

StreamUpload streamUpload = new StreamUpload();

SimpleUploadResponse response = streamUpload.upload(metaFilterConfig);

// 上传结果

if(response.isSuccess()){ // 成功

// 获取文件保存完整路径

response.getFilePath();

// ......

}else{ // 失败

// 判断失败是否可控

if(response.getException() == null){ // 可控

// 获取失败原因

response.getErrmsg();

// ......

}else{ // 不可控

// 直接抛出异常

throw response.getException();

}

}

不启用过滤功能

// 配置

StreamConfig streamConfig = StreamConfig.custom().setBufferSize(8192) // 默认8192B,单位B

.setMaxFileSize(1024 * 1024) // 限制文件最大1M,单位B

.setRequest(request) // 从request对象的body中读取文件流

.setFileNameWithSuffix("123.jpg") // 保存完整文件名(带扩展名)

.setSavePath("/home/user1/upload/img/2015/09/24/"); // 保存路径

// 上传

StreamUpload streamUpload = new StreamUpload();

SimpleUploadResponse response = streamUpload.upload(streamConfig);

// 上传结果

if(response.isSuccess()){ // 成功

// 获取文件保存完整路径

response.getFilePath();

// ......

}else{ // 失败

// 判断失败是否可控

if(response.getException() == null){ // 可控

// 获取失败原因

response.getErrmsg();

// ......

}else{ // 不可控

// 直接抛出异常

throw response.getException();

}

}

html表单流上传

启用过滤功能

// 过滤器

MetaFilter metaFilter = new MetaFilter();

metaFilter.add(".jpg", "FFD8FF"); // 允许的文件类型,params: 文件后缀名, 文件头十六进制字符串

Map metaMap = new HashMap();

metaMap.put(".png", "89504E47");

metaFilter.fromMap(metaMap); // 批量添加允许的文件类型

// 配置

MetaFilterConfig metaFilterConfig = MetaFilterConfig.custom().setBufferSize(8192) // 默认8192B,单位B

.setMaxFileSize(1024 * 1024) // 限制文件最大1M,单位B

.setFilter(metaFilter) // 过滤器

.setRequest(request) // 从request对象的body中读取文件流

.setFileNameWithoutSuffix("123") // 保存文件名(不带扩展名,自动识别)

.setSavePath("/home/user1/upload/img/2015/09/24/"); // 保存路径

// 上传

FormUpload formUpload = new FormUpload();

SimpleUploadResponse response = formUpload.upload(metaFilterConfig);

// 上传结果

if(response.isSuccess()){ // 成功

// 获取文件保存完整路径

response.getFilePath();

// ......

}else{ // 失败

// 判断失败是否可控

if(response.getException() == null){ // 可控

// 获取失败原因

response.getErrmsg();

// ......

}else{ // 不可控

// 直接抛出异常

throw response.getException();

}

}

不启用过滤功能

// 配置

FormConfig formConfig = FormConfig.custom().setBufferSize(8192) // 默认8192B,单位B

.setMaxFileSize(1024 * 1024) // 限制文件最大1M,单位B

.setRequest(request) // 从request对象的body中读取文件流

.setFileNameWithoutSuffix("123") // 保存文件名(不带扩展名,自动提取)

.setSavePath("/home/user1/upload/img/2015/09/24/"); // 保存路径

// 上传

FormUpload formUpload = new FormUpload();

SimpleUploadResponse response = formUpload.upload(formConfig);

// 上传结果

if(response.isSuccess()){ // 成功

// 获取文件保存完整路径

response.getFilePath();

// ......

}else{ // 失败

// 判断失败是否可控

if(response.getException() == null){ // 可控

// 获取失败原因

response.getErrmsg();

// ......

}else{ // 不可控

// 直接抛出异常

throw response.getException();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值