This action will force synchronization from 昕有灵犀/xyFS私有OSS文件云存储服务-私有云文件存储, 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.
一站式企业私有文件服务。针对软件开发时提供的文件存储系统,对文件上传、下载、分类、分组、审计、统计等操作进行业务剥离,支持企业内多项目,提供统一的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开发感兴趣的朋友和我一起打造系列产品线。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。