Skip to content

Latest commit

 

History

History
135 lines (110 loc) · 10.7 KB

README.md

File metadata and controls

135 lines (110 loc) · 10.7 KB

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

快速使用

1. pom.xml 中加入:

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

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

2. 代码中调用

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

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);

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

SpringBoot框架中使用

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

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

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

扩展-用户自定义存储的场景

比如我有一个建站平台,可以开通多个网站。每个网站都可以单独设置它自己的存储方式、以及生成网站html静态文件的保存方式,比如有的建站人员习惯ftp、有的建站人员习惯华为云OBS云存储,那么可以使用本项目的能力,有网站用户自行决定采用哪种存储方式。而多种多样的存储方式,无需建站平台本身进行代码的判断、适配等繁琐的工作!
有关这种场景,可以参考: https://gitee.com/mail_osc/FileUpload/tree/main/config_json

交流及参与贡献

作者:管雷鸣 微信:xnx3com QQ交流群::579544729

开源项目

致力于开源基础化信息建设,如有需要,可直接拿去使用。这里列出了我部分开源项目:

项目 star数量 简介
wangmarket CMS 私有部署自己的SAAS建站系统
obs-datax-plugins Datax 的 华为云OBS 插件
templatespider 扒网站工具,所见网站皆可为我所用
FileUpload 文件上传,各种存储任意切换
cms client 云服务深度结合无服务器建站
kefu.js https://gitee.com/mail_osc/kefu.js
msg.js 轻量级js消息提醒组件
translate.js 三行js实现 html 全自动翻译
WriteCode 代码生成器,自动写代码
log Java日志存储及读取
layui translate Layui的国际化支持组件
http.java Java8轻量级http请求类
xnx3 Java版按键精灵,游戏辅助开发
websocket.js js的WebSocket框架封装
email.java 邮件发送
notification.js 浏览器通知提醒工具类
pinyin.js JS中文转拼音工具类
xnx3_weixin Java 微信常用工具类
xunxian QQ寻仙的游戏辅助软件
wangmarket_shop 私有化部署自己的 SAAS 商城
wm Java开发框架及规章约束
yunkefu 私有化部署自己的SAAS客服系统
javadoc 根据标准的 JavaDoc 生成接口文档
elasticsearch util 用sql方式使用Elasticsearch
AutoPublish Java应用全自动部署及更新
aichat 智能聊天机器人
yunbackups 自动备份文件到云存储及FTP等
chatbot 智能客服机器人
java print Java打印及预览的工具类
…………