本工程为本人开发的开源项目,地址:

https://gitee.com/475660/xyFS

介绍:

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

截图预览

首页界面: 

文件管理: 

 

API管理: 

测试上传: 

上传到七牛云效果: 

上传到阿里云效果: 

上传到Mongo GridFS效果: 

上传到SeaweedFS效果: 

程序调试输出: 

安装、使用教程

  • 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

全部配置:

# tomcat服务端口         #
server.port=9091
#启用shutdown
endpoints.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 = 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 # xyfs存储配置 #
storage.diskprefix = http://localhost:9091/files/ # 七牛存储配置 #
storage.qiniuprefix = http://pbby0yzdu.bkt.clouddn.com/
storage.qiniuak = _IAafy8aX5x7h-4FBEvH2DqCtTq2c7sESPSlfG
storage.qiniusk = _8hy2LE6kfTKr3wDUWJONgFRxPKX4cDQhi79Bj
storage.qiniubucket = xytalk # mongodb.gridfs配置 #
storage.gridfshost = 127.0.0.1
storage.gridfsdbname = xyfs
storage.gridfsport = 27017
storage.gridfscollectionname = fs # fastDFS 配置 #
storage.fastdfsconnecttimeout = 5
storage.fastdfsnetwork_timeout = 10
storage.fastdfscharset = UTF-8
storage.fastdfstrackerhttpport = 80
storage.fastdfsantistealtoken = no
storage.fastdfssecret_key = 1234567890
storage.fastdfstrackerserver = 192.168.17.112:22122 # SeaweedFS 配置 #
storage.seaweedfshost = localhost
storage.seaweedfsport = 9333
storage.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.JDBC
spring.datasource.url=jdbc:sqlite:DbSqlite/xyfs.db
spring.datasource.platform=sqlite
spring.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.BasicDataSource
spring.datasource.dbcp2.max-wait-millis=10000
spring.datasource.dbcp2.min-idle=5
spring.datasource.dbcp2.initial-size=5
spring.datasource.dbcp2.validation-query=SELECT 1 FROM app
spring.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:ss
spring.jackson.joda-date-time-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8 # multipart 上传配置 #
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=1024MB
spring.servlet.multipart.max-request-size=1024MB # oss 日志配置 #
logging.config=classpath:logback.xml

昕有灵犀-xyFS私有文件云存储OSS服务的更多相关文章

  1. 阿里云存储oss+怎么上传找文件夹

    最近公司做工程项目,实现文件夹云存储上传. 网上找了很久,发现网上很多项目都存在相似问题,最后终于找到了一个符合我要求的项目. 工程如下: 这里对项目的文件夹云存储上传进行分析,实现文件夹上传,如何进 ...

  2. 阿里云存储OSS之九大使用技巧

    http://www.biphp.com/cloud-computing/%E9%98%BF%E9%87%8C%E4%BA%91%E5%AD%98%E5%82%A8oss%E4%B9%8B%E4%B9 ...

  3. 阿里云(一)云存储OSS的命令行osscmd的安装和使用

    一.安装Python 在Linux Shell里验证Python版本: $ python -V Python 2.7.10 二.安装OSScmd SDK osscmd是基于python 2.5.4(其 ...

  4. 使用OwnCloud建立属于自己私有的云存储网盘

    1.需要LAMP架构 实验环境:centos7.4 64位系统[root@xuegod63 ~]# yum install -y httpd php php-mysql mariadb-server ...

  5. Haproxy内网连接阿里云存储OSS后提供下载

    global log 127.0.0.1 local0 maxconn #最大连接数 chroot /usr/local/haproxy uid #所属运行的用户UID gid #所属运行用用户组 d ...

  6. 阿里云对象存储oss上传文件夹

    最近公司做工程项目,实现文件夹云存储上传. 网上找了一天,发现网上很多代码都存在相似问题,最后终于找到了一个满足我需求的项目. 工程如下: 这里对项目的大文件传输功能做出分析,怎么实现文件夹上传的,如 ...

  7. Java使用百度云存储BCS-让你的数据下载飞起来

    作者:Vinkn 来自http://www.cnblogs.com/Vinkn/ 一.简介 云也不是一个新概念了,云到底是什么东西,你叫我说个明明白白的我也说不出来,姑且算作联网的就叫做云.国内的云服 ...

  8. 谷粒 | 10 | 阿里云OSS存储对象服务

    阿里云OSS对象存储服务 准备工作 1.在service模块新建子模块service_oss 2.引入pom.xml文件中引入oss服务依赖 <dependencies> <!--a ...

  9. 博客搬家 - 记第四次搬家(hugo建站推送到谷歌云存储)

    写在前面,搬迁记录 记录我的博客这次搬家过程.我的博客之前经历过: wordpress github page Bitcron - 机制很不错(写完的博客自动保存到dropbox并发布,可惜搜索引擎的 ...

随机推荐

  1. 史上最坑 idea 更改代码不生效

    原来, 如果本地多次调整过系统时间,那么gradle 的缓存 会缓存 你的 上次编译时间再未来,那么你再怎么编译,都很难生效,即使删除了生成的字节码目录. 然后invalidate caches/re ...

  2. Spark 基础之SQL 快速上手

    知识点 SQL 基本概念 SQL Context 的生成和使用 1.6 版本新API:Datasets 常用 Spark SQL 数学和统计函数 SQL 语句 Spark DataFrame 文件保存 ...

  3. 《Network Security A Decision and Game Theoretic Approach》阅读笔记

    网络安全问题的背景 网络安全研究的内容包括很多方面,作者形象比喻为盲人摸象,不同领域的网络安全专家对网络安全的认识是不同的. For researchers in the field of crypt ...

  4. Pandas合并数据集之merge、join方法

    合并数据集 pandas.merge 可根据一个或多个键将不同DataFrame中的行连接起来. pandas.concat 可以沿着一条轴将多个对象堆叠到一起. combine_first merg ...

  5. OpenJudge NOI 4976 硬币

    http://noi.openjudge.cn/ch0207/4976/ 描述 宇航员Bob有一天来到火星上,他有收集硬币的习惯.于是他将火星上所有面值的硬币都收集起来了,一共有n种,每种只有一个:面 ...

  6. maven 项目打包到本地仓库并且推送到私服仓库

    首先进入到项目文件夹下,然后进入cmd命令窗口,第一步先clean一下,输入命令 mvn clean. 第二步打包到本地,输入命令mvn clean package -Dmaven.test.skip ...

  7. [leetcode]76. Minimum Window Substring最小字符串窗口

    Given a string S and a string T, find the minimum window in S which will contain all the characters ...

  8. 30.Mysql常见问题和应用技巧

    30.Mysql常见问题和应用技巧30.1 忘记Mysql的root密码30.2 如何处理MyISAM存储引擎的表损坏 30.2.1 方法一:使用myisamchk工具 30.2.2 方法二:使用SQ ...

  9. 批量屏蔽符合条件的IP地址《目前仅测Centos 6 版本》

    使用办法:可以将下面的sh保存到一个单独的文件中,比如ipad.sh,然后再编辑获取IP地址列表中的那段.最终的结果是需要直接获取到IP地址,一行一个,可以有多个文件,一行一个,进行重定向到指定的IP ...

  10. Django获取数据库数据时根据id筛选

    filter(id__in=models.Teacher.objects.all()[0:5]) teacher_list = models.Teacher.objects.filter(id__in ...