• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

xyFS私有OSS文件云存储服务-私有云文件存储: 私有云文件存储软件OSS,高可用File Syst ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

xyFS私有OSS文件云存储服务-私有云文件存储

开源软件地址:

https://gitee.com/475660/xyFS

开源软件介绍:

xyFS私有OSS文件存储服务

项目介绍

一站式企业私有文件服务。针对软件开发时提供的文件存储系统,对文件上传、下载、分类、分组、审计、统计等操作进行业务剥离,支持企业内多项目,提供统一的oss私有文件服务。
涵盖了保护企业隐私文件的私有存储,也可接入公有云存储方案。开发初衷是应用于xyTalk企业IM即时通讯的离线文件存储、群文件、图片、短语音、短视频、企业文档库等应用。
PC客户端开源(开放中)::https://gitee.com/475660/xyTalk-pc
iOS客户端开源(开放中):https://gitee.com/475660/xyTalk-ios
Android客户端开源(尚未开放)


xyFS不仅仅是独立可用的文件系统,还通过接口灵活集成以下服务:
  • 1.私有Xy.File OSS-FS文件服务 (自主开发,免费开源)
  • 2.私有分布式文件:MongoDB GridFS分布式文件系统
  • 3.私有分布式文件:FastDFS文件系统
  • 4.私有分布式文件:SeaweedFS
  • 5.私有企业云存储:Seafile网盘
  • 6.私有BASE64转存关系数据库存储(停用)
  • 7.公有云存储:阿里OSS云存储
  • 8.公有云存储:七牛云
  • 9.公有云存储:腾讯文件云存储 CFS
    在第三方私有云领域,我推荐SeaweedFS、GridFS。在公有云领域,推荐阿里OSS和七牛云。
    SeaweedFS是一个高性能、自带Rest API的分布式文件系统,可访问我的博客了解:https://www.cnblogs.com/starcrm/p/9377851.html

项目详细文档

http://xyfs.mydoc.io/

运行时访问地址:
http://localhost:9091/files/index/

软件组成

  • 1.xyFS 管理后端;
  • 2.xyPortal Web前端中的“文档库”部分;
  • 3.xyFS HTTP API;
  • 4.xyFS JAVA Client;

采用技术

  • 1.Spring Boot、MVC、AOP、Actuator、Swagger
  • 2.Dbcp2、Druid,数据库连接池2种模式可选
  • 3.JPA/Hibernate
  • 4.Ehcache
  • 5.HTML、 Only Bootstrap4。只使用了单纯的Bootstrap4,不再含其他任何前端UI框架。纯净、自然、轻量、极简、易维护。
  • 6.Thymeleaf/Freemarker,2种模板引擎可切换
  • 7.MySQL、Oracle、SQLite,3种数据库模式可选
  • 8.其他:Gradle、Tomcat、Nginx

安装、使用教程

  • 1、Import Gradle Project;
  • 2、点击工程,右键Gradle>>Refresh Gradle Project;
  • 3、运行方法:右键“FileSystemApplication.java”,点击“run as”--“Java App..”。或者选择Gradle Task栏,点击“bootRun”;
  • 4、如果出现以下信息,说明运行时环境已经完成:

2018-07-09 16:06:56,794 INFO (StartupInfoLogger.java:59)- Started FileSystemApplication in 14.575 seconds (JVM running for 15.457)
如果出现(Exception opening socket)localhost:27017异常 ,不必惊慌,只是mongodb未安装而已,不影响系统使用。
访问:
http://localhost:9091/files/index/

开发配置

可以在配置文件application.properties里修改属性

例如tomcat服务端口server.port=9091

是否重新命名文件名,如果是个人文件则重命名为:username_ + 原文件名;如果是群组文件则重命名为:groupid_ + 原文件名
storage.rename = true

存储源.可多选.可以同时储存多个数据源,便于备份
类型有:xyfs\Seafile\FastDFS\SeaweedFS\MongoDB\aliOSS\qiniu\CFS

  • storage.todisk = true
  • storage.toqiniu = true
  • storage.tofastdfs = false
  • storage.tomongodb = false
  • storage.toseaweedfs = false
  • storage.toalioss = false
  • storage.tocfs = false

设置下载的源 ,单选
类型有:xyfs\Seafile\FastDFS\SeaweedFS\MongoDB\aliOSS\qiniu\CFS

  • storage.downloadfrom = xyfs

upload上传API说明

方式1:使用http Post接口
Post API URL: /fileUploadPost
Parameters:
* @param MultipartHttpServletRequest request,
* @param Integer appid 应用id
* @param String username 上传者用户名
* @param String groupid MUC群组名称,如果是个人文件则无需
return:{statusCode=状态码, content='上传后的文件名'}
比如:
{statusCode=200, content='wangxin_Tigase开发文档.doc'}

方式2:java client上传(请见ClientMultipartFormPost.java):
上传方法:

    /**     * 执行文件上传     *     * @param httpClient      HttpClient客户端实例,传入null会自动创建一个     * @param remoteFileUrl   远程接收文件的地址     * @param localFilePath   本地文件地址     * @param appid   应用id     * @param username   上传者用户名     * @param groupid   MUC群组名称,如果是个人文件则无需     * @param charset         请求编码,默认UTF-8     * @param closeHttpClient 执行请求结束后是否关闭HttpClient客户端实例     * @return     * @throws ClientProtocolException     * @throws IOException     */    public static HttpResult executeUploadFile(CloseableHttpClient httpClient,    		String remoteFileUrl,     		String localFilePath, 		    		String appid,     		String username,     		String groupid,    		boolean closeHttpClient,    		String charset   )    		......

如何引用上传方法:
package xy.FileSystem.Client;import xy.FileSystem.File.HttpResult;import xy.FileSystem.Utils.HttpHelper;//Post上传演示public class ClientMultipartFormPost {	public static void main(String[] args) throws Exception {		HttpResult  result = HttpHelper.executeUploadFile(HttpHelper.createHttpClient(), 				"http://localhost:9091/fileUploadPost", //post路径url				"D://Tigase开发文档.doc", //要上传的本地文件全路径				"1234", // appid				"wangxin", //上传者username				"", //groupid,如果不涉及群组,则无需传此参数				true,//执行请求结束后是否关闭HttpClient客户端实例				"UTF-8" );		System.out.println(result.toString());	}}

返回值:
如果成功:
{statusCode=200, content='上传后的文件名'}
比如:
{statusCode=200, content='wangxin_Tigase开发文档.doc'}

download下载API说明

方式1:使用http Get接口
Get API URL: /downloadByFilename
Parameters:filename ,类型:string
return:下载成功则true;失败则false
方式2:java client下载(请见ClientMultipartFormDownload.java)

package xy.FileSystem.Client;import xy.FileSystem.Utils.HttpHelper;//下载public class ClientMultipartFormDownload {	public static void main(String[] args) throws Exception {		HttpHelper.executeDownloadFile(HttpHelper.createHttpClient(), 				"http://localhost:9091/files/wangxin_Tigase开发文档.doc", //服务器文件				"D://wangxin_Tigase开发文档.doc", //下载到本地的文件				"UTF-8",				true);	}}

全部配置:

# tomcat服务端口         #server.port=9091#启用shutdownendpoints.sensitive=false# 存储的相对路径,如果 storage.source = xyfs 需要配置        #storage.location = uploadfiledir# 是否重新命名文件名,如果是个人文件则重命名为:username_ + 原文件名;如果是群组文件则重命名为:groupid_ + 原文件名     #storage.rename = true# 存储源.可多选.可以同时储存多个数据源,便于备份      ## 类型有:xyfs\\Seafile\\FastDFS\\SeaweedFS\\MongoDB\\aliOSS\\qiniu\\CFS        #storage.todisk = true  storage.toqiniu = truestorage.tofastdfs = falsestorage.tomongodb = falsestorage.toseaweedfs = falsestorage.toalioss = falsestorage.tocfs = false# 用于设置下载的源 ,单选   ## 类型有:xyfs\\Seafile\\FastDFS\\SeaweedFS\\MongoDB\\aliOSS\\qiniu\\CFS        #storage.downloadfrom = xyfs# xyfs存储配置     #storage.diskprefix = http://localhost:9091/files/# 七牛存储配置     #storage.qiniuprefix = http://pbby0yzdu.bkt.clouddn.com/storage.qiniuak = _IAafy8aX5x7h-4FBEvH2DqCtTq2c7sESPSlfGstorage.qiniusk = _8hy2LE6kfTKr3wDUWJONgFRxPKX4cDQhi79Bjstorage.qiniubucket = xytalk# mongodb.gridfs配置     #storage.gridfshost = 127.0.0.1storage.gridfsdbname = xyfsstorage.gridfsport = 27017storage.gridfscollectionname = fs# fastDFS 配置     #storage.fastdfsconnecttimeout = 5storage.fastdfsnetwork_timeout = 10storage.fastdfscharset = UTF-8storage.fastdfstrackerhttpport = 80storage.fastdfsantistealtoken = nostorage.fastdfssecret_key = 1234567890storage.fastdfstrackerserver = 192.168.17.112:22122# SeaweedFS 配置     #storage.seaweedfshost = localhoststorage.seaweedfsport = 9333storage.seaweedfstimeout = 10# ali OSS 配置     #storage.aliendpoint = ""storage.aliaccesskeyid  = ""storage.aliaccesskeysecret = ""storage.alibucketname  = ""storage.alidownloadkey  = ""# 第一次使用的配置:自动创建数据库表,如果是运行SQL脚本则无需使用此配置         ## spring.jpa.hibernate.ddl-auto = create# 第二次开始使用的配置:据库表会根据Entity的变动而更新         # spring.jpa.hibernate.ddl-auto = update # Sqlite数据源        #spring.datasource.driver-class-name=org.sqlite.JDBCspring.datasource.url=jdbc:sqlite:DbSqlite/xyfs.dbspring.datasource.platform=sqlitespring.jpa.database-platform= xy.FileSystem.Dialect.SQLiteDialect# mysql数据源         ##spring.datasource.url=jdbc:mysql://localhost:3306/xyfs#spring.datasource.username=root#spring.datasource.password=mysql# oracle数据源         ##spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver#spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521:torcl#spring.datasource.username=center#spring.datasource.password=centerDB12345# dbcp2连接池配置       #spring.datasource.type=org.apache.commons.dbcp2.BasicDataSourcespring.datasource.dbcp2.max-wait-millis=10000spring.datasource.dbcp2.min-idle=5spring.datasource.dbcp2.initial-size=5spring.datasource.dbcp2.validation-query=SELECT 1 FROM appspring.datasource.dbcp2.connection-properties=characterEncoding=utf8# druid连接池的配置信息       ##spring.datasource.type=com.alibaba.druid.pool.DruidDataSource#spring.datasource.initialSize=5#spring.datasource.minIdle=5#spring.datasource.maxActive=20#spring.datasource.maxWait=60000#spring.datasource.timeBetweenEvictionRunsMillis=60000#spring.datasource.minEvictableIdleTimeMillis=300000#spring.datasource.validationQuery=SELECT 1 FROM App#spring.datasource.testWhileIdle=true#spring.datasource.testOnBorrow=false#spring.datasource.testOnReturn=false#spring.datasource.poolPreparedStatements=true#spring.datasource.maxPoolPreparedStatementPerConnectionSize=20#spring.datasource.filters=stat,wall,log4j# spring jackson 时间配置         #spring.jackson.date-format=yyyy-MM-dd HH:mm:ssspring.jackson.joda-date-time-format=yyyy-MM-dd HH:mm:ssspring.jackson.time-zone=GMT+8# multipart 上传配置            #spring.servlet.multipart.enabled=truespring.servlet.multipart.max-file-size=1024MBspring.servlet.multipart.max-request-size=1024MB# oss 日志配置       #logging.config=classpath:logback.xml

## 联系作者 ##

如有合作意向、Bug、建议邮箱至[email protected]
注意:本产品只是我业余时间开发验证和练手,目前Bug还较多。


我的主要开源作品:https://gitee.com/475660/xyTalk-pc/
我的博客:https://www.cnblogs.com/starcrm/
联系邮箱:[email protected]

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap