昕有靈犀-xyFS私有文件雲存儲OSS服務

本工程爲本人開發的開源項目,地址:html

https://gitee.com/475660/xyFS前端

介紹:java

一站式企業私有文件服務。針對軟件開發時提供的文件存儲系統,對文件上傳、下載、分類、分組、審計、統計等操做進行業務剝離,支持企業內多項目,提供統一的oss私有文件服務。 
涵蓋了保護企業隱私文件的私有存儲,也可接入公有云存儲方案。開發初衷是應用於xyTalk企業IM即時通信的離線文件存儲、羣文件、圖片、短語音、短視頻、企業文檔庫等應用。 
xyTalk地址:https://gitee.com/475660/xyTalk-pc 
xyFS不單單是獨立可用的文件系統,還經過接口靈活集成如下服務:mysql

  • 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的分佈式文件系統,可訪問個人博客瞭解:http://www.javashuo.com/article/p-vtsmuufa-go.html

項目詳細文檔

http://xyfs.mydoc.io/ios

運行時訪問地址: 
http://localhost:9091/files/index/git

軟件組成

  • 1.xyFS 管理後端;
  • 2.xyPortal Web前端中的「文檔庫」部分;
  • 3.xyFS HTTP API;
  • 4.xyFS JAVA Client;

採用技術

  • 1.Spring Boot、MVC、AOP、Actuator、Swagger
  • 2.Dbcp二、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

截圖預覽

首頁界面: 
XyTalk FS web

文件管理: spring

XyTalk FS 

API管理: 
XyTalk FS sql

測試上傳: 
XyTalk FS mongodb

上傳到七牛雲效果: 
XyTalk FS 

上傳到阿里雲效果: 
XyTalk FS 

上傳到Mongo GridFS效果: 
XyTalk FS 

上傳到SeaweedFS效果: 
XyTalk FS 

程序調試輸出: 
XyTalk FS

安裝、使用教程

  • 一、Import Gradle Project;
  • 二、點擊工程,右鍵Gradle>>Refresh Gradle Project;
  • 三、運行方法:右鍵「FileSystemApplication.java」,點擊「run as」--「Java App..」。或者選擇Gradle Task欄,點擊「bootRun」;
  • 四、若是出現如下信息,說明運行時環境已經完成:

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
相關文章
相關標籤/搜索