雷鸣快传 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
雷鸣快传 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
雷鸣快传 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache
开发语言 Java
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 鬼画符
适用人群 未知
收录时间 2023-02-14

软件简介

雷鸣快传是使用两行 Java 代码实现的文件上传工具。2分钟对接使用,从此无论本地存储、分布式存储、对象存储……都是完全一样的代码调用! 它赋予你各种存储随便切换随便用的能力,而无需动项目代码。

1. 快速使用

1.1. pom.xml 中加入:

如果你只是单纯本地用,用不到像是华为云OBS存储了、Springboot框架的,那你可以只使用 fileupload-core 这一个核心实现即可

<!-- 文件上传相关的核心支持 https://github.com/xnx3/FileUpload -->
<dependency> 
	<groupId>cn.zvo.fileupload</groupId>
	<artifactId>fileupload-core</artifactId>
	<version>1.1</version>
</dependency>

1.2. 代码中调用

FileUpload fileUpload = new FileUpload();	//创建
UploadFileVO vo = fileUpload.uploadString("abc/1.txt", "123456"); //这里上传一个文本文件,文本文件的内容是 123456 ,将他保存到 abc 目录下的 1.txt 文件
System.out.println(vo); //输出到控制台,看看结果

1.3. 更多设置方式

FileUpload fileUpload = new FileUpload();
//设置只允许上传jpg、png、gif、txt后缀的文件
fileUpload.setAllowUploadSuffix("jpg|png|gif|txt");
//设置允许上传的文件大小,最大不能超过10MB
fileUpload.setMaxFileSize("10MB");
//设置存储到哪。不设置默认使用LocalStorage本地存储。比如这里可以设置使用华为云OBS存储 
fileUpload.setStorage(...);
//设置上传后文件所访问URL的域名,当文件上传完成后,会通过 UploadFileVO.url 返回文件访问的URL
fileUpload.setDomain("http://res.zvo.cn/");
//这里上传一个文本文件,文本文件的内容是 123456 ,将他保存到 abc 目录下的 1.txt 文件
UploadFileVO vo = fileUpload.uploadString("abc/1.txt", "123456");
//输出到控制台,看看结果
System.out.println(vo);

1.4. Demo示例

demo_javase/README.md

存储方式

默认使用的是本地存储。可以切换成采用华为云OBS对象存储、私有化部署FastDFS等来进行存储。 比如使用华为云OBS对象存储,则pom.xml 中额外加入:

<!-- 加入华为云OBS存储的实现。 (存储到哪,这里artifactId就引入的哪里的 storage.xxx 如果单纯存储到本地,这里直接就不用在引入这个 storage.xxx 了,core中默认带了本地文件存储的实现) -->
<dependency> 
    <groupId>cn.zvo.fileupload</groupId>
    <artifactId>fileupload-storage-huaweicloudOBS</artifactId>
    <version>1.0</version>
</dependency>

代码中的变动,仅仅只是针对 FileUpload ,增加一行 setStorage 设置:

fileUpload.setStorage(new HuaweicloudOBSStorage(key, secret, endpoint, obsname));	//设置使用obs存储

如此,便将本地存储切换为了使用华为云OBS存储。 点此查看使用华为云OBS对象存储的详细说明 storage_huaweicloudOBS/README.md

2. SpringBoot框架中使用

在springboot项目中使用时,pom.xml 中再加入以下:

<!-- 在 SpringBoot 框架中的快速使用。 (在不同的框架中使用,这里artifactId引入的fileupload-framework-xxx也不同) -->
<dependency> 
	<groupId>cn.zvo.fileupload</groupId>
	<artifactId>fileupload-framework-springboot</artifactId>
	<version>1.1</version>
</dependency> 

代码中的变动:

正常是用 cn.zvo.fileupload.FileUpload 而SpringBoot框架中,则使用 cn.zvo.fileupload.framework.springboot.FileUpload 仅此区别。 具体SpringBoot的使用,可参考: framework_springboot/README.md

2.1 pom.xml 加入

<!-- 文件上传相关的核心支持 https://github.com/xnx3/FileUpload -->
<dependency> 
	<groupId>cn.zvo.fileupload</groupId>
	<artifactId>fileupload-core</artifactId>
	<version>1.1</version>
</dependency>

cn.zvo.fileupload fileupload-framework-springboot 1.0

 

2.2 Controller中使用

/**
 * 文件上传
 */
@RequestMapping(value="upload.json", method= {RequestMethod.POST})
@ResponseBody
public UploadFileVO uploadImage(@RequestParam("file") MultipartFile multipartFile){
	//将文件上传到 upload/file/ 文件夹中
	return FileUploadUtil.uploadImage("upload/file/", multipartFile);
}

/** * 文件下载 * @param path 要下载的文件,传入如 upload/file/123.zip */ @RequestMapping(value="download") public void download(String path, HttpServletResponse response){ FileUploadUtil.download(path, response); }

 

2.3 前端html文件

src/main/resources/static/ 下增加一个 upload.html 的文件,目的是能使用 localhost:8080/upload.html 就能访问到。 其内容为:

选择要上传的文件(可以传个图片试试):<br/>
<input type="file" name="file"/><button onclick="upload();">上传</button>

<script src="http://res.zvo.cn/request/request.js"></script><!-- 文件上传,开源地址 https://github.com/xnx3/request -->
<script>
function upload(){
	var file = document.getElementsByName('file')[0].files[0];	 //要上传的文件
	request.upload('/upload.json', {}, file, function(data){  //执行上传操作
		if(data.result == '1'){
			// 上传成功
		}else{
			// 上传出错,可弹出失败提示 : data.info
		}
	});
}
</script>

 

2.4 运行起来,测试一下

访问 http://localhost:8080/upload.html 即可进行测试体验了。 另外也可参见 demo_springboot/README.md 直接将这个demo_springboot项目拉下来,无需任何修改直接运行即可访问使用

2.5. 扩展-配置可上传文件大小及后缀

配置 application.properties (或yml),加入:

# 文件上传 https://github.com/xnx3/FileUpload
#
# 设置允许上传的文件最大是多大,比如10MB 单位为 KB、MB , 如果此项不设置,这里默认是3MB
fileupload.maxSize=10MB
# 设置允许上传的后缀名,传入格式如 png|jpg|gif|zip 多个用英文|分割。如果不设置,默认允许像是pdf、word、图片、音频、视频、zip等常用的且安全的文件后缀都可上传
fileupload.allowUploadSuffix=jpg|png|txt|zip
# 设置上传后文件所访问URL的域名,传入如: http://xxxx.com/  注意格式,后面以 / 结尾。非必填,可不设置。这里更多是用于像是CDN加速时,有专门的附件域名的场景使用
fileupload.domain=http://res.zvo.cn/
#
# 当前使用的是哪种存储方式。默认使用的是本地存储的方式。
# 上传文件保存到的路径,格式如 /mnt/tomcat8/fileupload/ 、或者windows服务器的话路径如 C:\\\\\\\\Users\\\\\\\\Administrator\\\\\\\\Desktop\\\\\\\\log\\\\\\\\  注意最后的斜杠不能拉下。如果不设置此,则不开启,上传文件则没任何动作。
#log.datasource.file.path=/mnt/tomcat8/fileupload/
fileupload.storage.local.path=G:\\\\\\\\git\\\\\\\\FileUpload\\\\\\\\

3. 扩展-存储方式-使用华为云OBS进行存储

默认是使用的本地存储的方式,但是在一些微服务、以及本身项目需要分布式部署的场景下,需要使用分布式存储支持,服务器本地存储显然是不够的,这里以华为云OBS对象存储的示例来演示

3.1 pom.xml 额外加入

<!-- 加入华为云OBS存储的实现。 (存储到哪,这里artifactId就引入的哪里的 storage.xxx 如果单纯存储到本地,这里直接就不用在引入这个 storage.xxx 了,core中默认带了本地文件存储的实现) -->
<dependency> 
    <groupId>cn.zvo.fileupload</groupId>
    <artifactId>fileupload-storage-huaweicloudOBS</artifactId>
    <version>1.0</version>
</dependency>

3.2 设置配置文件

配置 application.properties (或yml),加入:

#
# 设置当前使用的是哪种存储方式
# 如果此不设置,默认使用的是本地存储的方式。如果设置了,pom.xml 文件中,记得将此存储方式引入进来,不然会报错找不到这个class文件
# 下面便是具体针对华为云obs这种存储方式的配置了
# 华为云的 Access Key Id
fileupload.storage.huaweicloudOBS.accessKeyId=H0TPUBC6YDZxxxxxxxx
# 华为云的 Access Key Secret
fileupload.storage.huaweicloudOBS.accessKeySecret=je56lHuJ62VOhoSXxsfI9InmPAtVY9xxxxxxx
# 区域,传入格式如 "obs.cn-north-4.myhuaweicloud.com" ,详细可参考 https://developer.huaweicloud.com/endpoint?OBS
fileupload.storage.huaweicloudOBS.endpoint=obs.cn-north-4.myhuaweicloud.com
# 桶的名称
fileupload.storage.huaweicloudOBS.obsname=cha-template

注意,要将 fileupload.storage.local.path 默认服务器本地存储的配置注释掉

3.3 启动,测试

如此,就完成了从本地存储转为华为云OBS对象存储的实现。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(4) 发布并加入讨论🔥
发表了资讯
2023/09/08 18:03

Java 通用文件上传 v1.2 更新,增加七牛云、SFTP等存储方式支持

软件简介 两行 Java 代码实现文件上传。从此无论本地存储、分布式存储、对象存储…… 都是完全一样的代码调用! 它赋予你各种存储随便切换随便用的能力,而无需动项目代码。 更新说明 增加使用七牛云云存储的支持 增加使用SFTP进行存储的支持 增加普通本地存储切换阿里云OSS存储时,已线上部署的项目自动加载相关阿里云jar包的shell 增加忽略限制上传条件的相关接口,避免系统中如果有特殊情况而无法越过上传限制的问题 优化Spr...

1
22
发表了资讯
2023/02/15 17:59

Java 通用文件上传 v1.1 更新,增加华为云 obs 及优化 springboot 支持

软件简介 两行 Java 代码实现文件上传。从此无论本地存储、分布式存储、对象存储…… 都是完全一样的代码调用! 它赋予你各种存储随便切换随便用的能力,而无需动项目代码。 更新说明 增加华为云OBS的文件上传及操作支持 https://gitee.com/HuaweiCloudDeveloper/file-upload 增加阿里云OSS的的文件上传及操作支持 https://gitee.com/mail_osc/FileUpload/tree/main/storage_aliyunOSS 优化默认存储的相关设置可用springboot配置...

1
16
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
4 评论
43 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部