This action will force synchronization from 奇文社区/ufop-spring-boot-starter, which will overwrite any changes that you have made since you forked the repository, and can not be recovered!!!
Synchronous operation will process in the background and will refresh the page when finishing processing. Please be patient.
UFOP (Unified File Operation Platform) 统一文件操作平台,通过引入该依赖,可以实现文件操作的统一管理
此项目为奇文网盘核心功能,之前有不少人咨询,如何将网盘集成到自己的项目?出于这个目的,就把这块功能剥离出来供大家方便引入,目前实现的主要功能如下:
mvn clean install org.apache.maven.plugins:maven-deploy-plugin:2.8:deploy -DskipTests
这里的具体版本号建议引入最新版本
<dependency>
<groupId>com.qiwenshare</groupId>
<artifactId>ufop-spring-boot-starter</artifactId>
<version>{new version}<version>
</dependency>
配置磁盘存储方式, 0-本地存储, 1-阿里云OSS存储, 2-fastDFS存储, 3-minio存储, 4-七牛云KODO对象存储
ufop.storage-type=0
当选择0-本地磁盘存储之后,你还可以继续配置本地文件存储路径
ufop.local-storage-path=D://test
当选择1-阿里云OSS存储之后,需要配置阿里云OSS相关信息,
#阿里云oss基本配置
ufop.aliyun.oss.endpoint=
ufop.aliyun.oss.access-key-id=
ufop.aliyun.oss.access-key-secret=
ufop.aliyun.oss.bucket-name=
#阿里云oss绑定域名
ufop.aliyun.oss.domain=oss.qiwenshare.com
当选择2-FastDFS存储之后,则需要配置FastDFS服务器信息
#FastDFS配置
fdfs.so-timeout=1501
fdfs.connect-timeout=601
fdfs.thumb-image.width=150
fdfs.thumb-image.height=150
fdfs.tracker-list=127.0.0.1:22122
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=ma123456
# 连接池最大连接数(使用负值表示没有限制) 默认 8
spring.redis.lettuce.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
spring.redis.lettuce.pool.max-wait=10000
# 连接池中的最大空闲连接 默认 8
spring.redis.lettuce.pool.max-idle=30
# 连接池中的最小空闲连接 默认 0
spring.redis.lettuce.pool.min-idle=10
#连接超时时间(毫秒)
spring.redis.timeout=5000
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {
@Bean
public KeyGenerator keyGenerator() {
return (target, method, params) -> {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
sb.append(obj.toString());
}
return sb.toString();
};
}
/**
* 设置 redisTemplate 的序列化设置
* @param redisConnectionFactory redis连接工厂
* @return redisTemplate
*/
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
// 1.创建 redisTemplate 模版
RedisTemplate<Object, Object> template = new RedisTemplate<>();
// 2.关联 redisConnectionFactory
template.setConnectionFactory(redisConnectionFactory);
// 3.创建 序列化类
GenericToStringSerializer genericToStringSerializer = new GenericToStringSerializer(Object.class);
// 6.序列化类,对象映射设置
// 7.设置 value 的转化格式和 key 的转化格式
template.setValueSerializer(genericToStringSerializer);
template.setKeySerializer(new StringRedisSerializer());
template.afterPropertiesSet();
return template;
}
}
当配置完基础信息之后,使用就非常简单了,伪代码如下:
注入UFOPFactory
@Resource
UFOPFactory ufopFactory;
上传文件操作,具体这个上传操作是哪种存储实现,由ufop.storage-type
配置项决定,
//上传操作
Uploader uploader = ufopFactory.getUploader();
uploader.upload(request, uploadFile);
下载和删除则需要用户自己传入文件存储类型
//下载操作
Downloader downloader = ufopFactory.getDownloader(fileBean.getStorageType());
downloader.download(httpServletResponse, downloadFile);
//删除操作
Deleter deleter = ufopFactory.getDeleter(fileBean.getStorageType());
deleter.delete(deleteFile);
该工程目前已经在奇文网盘运行了一年多时间,但不免还是会有很多缺陷,如果遇到问题,欢迎大家参与贡献,一块去完善它
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。