同步操作将从 昕有灵犀/xyFS私有OSS文件云存储服务-私有云文件存储 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
一站式企业私有文件服务。针对软件开发时提供的文件存储系统,对文件上传、下载、分类、分组、审计、统计等操作进行业务剥离,支持企业内多项目,提供统一的oss私有文件服务。
涵盖了保护企业隐私文件的私有存储,也可接入公有云存储方案。开发初衷是应用于xyTalk企业IM即时通讯的离线文件存储、群文件、图片、短语音、短视频、企业文档库等应用。
PC客户端开源(开放中)::
https://gitee.com/475660/xyTalk-pc
iOS客户端开源(开放中):
https://gitee.com/475660/xyTalk-ios
Android客户端开源(尚未开放)
运行时访问地址:
http://localhost:9091/files/index/
首页界面:
文件管理:
API管理:
测试上传:
上传到七牛云效果:
上传到阿里云效果:
上传到Mongo GridFS效果:
上传到SeaweedFS效果:
程序调试输出:
可以在配置文件application.properties里修改属性
例如 tomcat服务端口 server.port=9091
是否重新命名文件名,如果是个人文件则重命名为:username_ + 原文件名;如果是群组文件则重命名为:groupid_ + 原文件名
storage.rename = true
存储源.可多选.可以同时储存多个数据源,便于备份
类型有:xyfs\Seafile\FastDFS\SeaweedFS\MongoDB\aliOSS\qiniu\CFS
设置下载的源 ,单选
类型有:xyfs\Seafile\FastDFS\SeaweedFS\MongoDB\aliOSS\qiniu\CFS
方式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'}
方式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
#启用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
如有合作意向、Bug、建议邮箱至475660@qq.com
QQ群:780461008
注意:本产品只是我业余时间开发验证和练手,目前Bug还较多。
欢迎对企业IM、协同门户、OA开发感兴趣的朋友和我一起打造系列产品线。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。