oss-server 小型对象存储系统
oss-server
项目介绍
oss-server是针对项目开发时提供的小型对象存储系统,开发者在针对文件上传时业务剥离,同时方便文件迁移,为满足单个项目,多个系统的情况下,提供统一的oss服务
oss-server主要提供功能:
1、上传功能
2、文件在线管理功能(包括文件的预览、内部上传、删除、更名)
3、权限管理(上传api权限用户维护、oss-server登录系统维护)
oss-server使用tomcat+nginx的方式,tomcat提供上传对象存储的能力,nginx提供在线访问的能力
oss不提供文件相关日志存储功能,是纯技术中间件
server端主要配置(application.properties
)如下:
#素材存储路径 -- 以/结尾
material.root=/home/material/
#素材下载路径根目录,该目录是nginx读取目录,可以使用域名
material.invokingRoot=http://192.168.0.7/
使用以上配置,服务端nginx配置如下:
server{
listen 80;
server_name 192.168.0.7;
charset utf-8;
location / {
root /home/material/;
}
}
该配置只是简单配置nginx访问路径,server_name可以是域名.
管理员预览
输入访问路径:http://ip:port/
输入application.properties
配置文件中的用户名密码:
#验证用户名 密码
oss.security.userName=admin
oss.security.password=adminA123
oss-server提供以下两种提交方式
base64字符串格式提交
该方式是后端需要将文件转换成base64字符串,提交给oss-server,该方式oss-server提供了java版的sdk,具体可参看oss-server-sdk-java
程序
请求接口:/oss/material/uploadByBinary
接口类型:post
请求类型:application/json;
请求参数:
{
"project": "",
"files": [
{
"original_name": "test.png",
"file": "文件流base64字符串",
"media_type": "png"
}
]
}
字段说明:
参数 | 说明 |
---|---|
project | 项目名称,oss-server会根据该名称创建项目目录,方便后续程序迁移 |
files | 上传文件数组 |
original_name | 文件原始名称 |
file | 文件流base64字符串 |
media_type | 文件格式类型 |
响应json
{
"code": "8200",
"message": "Success",
"data": [{
"id": "1a4c705d260647cc9be951ead3a449e6",
"url": "http://192.168.0.7/province_IIII/201805/30/1a4c705d260647cc9be951ead3a449e6.jpg",
"store": "/province_IIII/201805/30/1a4c705d260647cc9be951ead3a449e6.jpg"
}]
}
响应参数说明
参数 | 说明 |
---|---|
code | 错误码,8200为成功 |
message | 错误信息 |
data | 上传成功后文件返回信息 |
id | 文件唯一标识 |
url | 文件在线访问url |
store | 文件静态存储路径 |
form表单直接提交
该方式前端可直接通过form提交上传,后端不需要提供中转
请求接口:/oss/material/{project}/uploadMaterial
接口类型:post
请求参数:
参数 | 说明 |
---|---|
project | 项目名称,oss-server会根据该名称创建项目目录,方便后续程序迁移 |
module | 模块名称,可为空,很多情况下,我们希望分模块来存储我们的上传资源,这个时候,可以使用该module字段,例如:/product/wechat ,此时,oss生成的全路径是:{project}/product/wechat/... |
file | 上传文件名称,可以是数组多个文件 |
响应json
{
"code": "8200",
"message": "Success",
"data": [{
"id": "1a4c705d260647cc9be951ead3a449e6",
"url": "http://192.168.0.7/province_IIII/201805/30/1a4c705d260647cc9be951ead3a449e6.jpg",
"store": "/province_IIII/201805/30/1a4c705d260647cc9be951ead3a449e6.jpg"
}]
}
form表单代码示例如下
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<title>Title</title>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<form action="http://192.168.0.7:18000/oss/material/province_III/uploadMaterial" method="post" enctype="multipart/form-data" target="uploadIFrame">
<input type="file" name="file" value="选择文件"/>
<input type="submit" value="提交"/>
</form>
<iframe name="uploadIFrame" style="width: 500px;height: 500px;border: 1px solid gray;"></iframe>
</body>
</html>
软件架构
后端框架:SpringBoot 2.0.2.RELEASE
后端模块:freemarker
前端框架:layer+Bootstrap
安装教程
1、下载源码:git clone https://gitee.com/xiaoym/oss-server.git
2、修改application.properties配置文件,主要修改以下oss对外域名路径已经上传存储路径
#素材存储路径 -- 以/结尾
material.root=/home/material/
#素材下载路径根目录
material.invokingRoot=http://192.168.0.7/
3、打包:mvn package
4、运行jar包:java -jar oss-server-0.0.1-SNAPSHOT.jar
参与贡献
Fork 本项目
新建 Feat_xxx 分支
提交代码
新建 Pull Request
项目地址
如果项目对您有帮助,请前往项目地址给个Star !!!!
码云:https://gitee.com/xiaoym/oss-server
GitHub:https://github.com/xiaoymin/oss-server
oss-server 小型对象存储系统的更多相关文章
- go语言实现分布式对象存储系统之单体对象存储
对象存储 基本概念 主流存储类型分为三种:块存储.文件存储以及对象存储 NAS(文件存储):Network Attached storage,提供了存储功能和文件系统的网络服务器,客户端可以访问NAS ...
- Swift是一个提供RESTful HTTP接口的对象存储系统
Swift是一个提供RESTful HTTP接口的对象存储系统,最初起源于Rackspace的Cloud Files,目的是为了提供一个和AWS S3竞争的服务. Swift于2010年开源,是Ope ...
- SQL Server 查看对象之间的引用关系
前期准备: use studioA; go create table T(X int,Y int); insert into T(X,Y) values(1,1),(2,2); ...
- sql server 查看对象最后修改时间
sql server 查看对象最后修改时间,根据最后修改时间排序 存储过程 SELECT * FROM sys.all_objects WHERE TYPE='P' ORDER BY modify_ ...
- 查询Sql Server数据库对象结构
查询Sql Server数据库对象结构 查询数据库 查询架构 查询表 查询列 查询存储过程 查询视图 1.查询某一服务器下所有数据库 select t.[name] as 数据库 from sys.d ...
- Swift是一个提供RESTful HTTP接口的对象存储系统,目的是为了提供一个和AWS S3竞争的服务
Swift是一个提供RESTful HTTP接口的对象存储系统,最初起源于Rackspace的Cloud Files,目的是为了提供一个和AWS S3竞争的服务. Swift于2010年开源,是Ope ...
- SQL Server判断对象是否存在 (if exists (select * from sysobjects )(转)
1 判断数据库是否存在Sql代码 if exists (select * from sys.databases where name = ’数据库名’) drop database [数据库名] ...
- Tiny server:小型Web服务器
一.背景 csapp的网络编程粗略的介绍了关于网络编程的一些知识,在最后的一节主要就实现了一个小型的Webserver.这个server名叫Tiny,它是一个小型的可是功能齐全的Webserver.在 ...
- SQL Server 数据库对象命名参考
一. 引言 编码规范是一个优秀程序员的必备素质,然而,有很多人非常注重程序中变量.方法.类的命名,却忽视了同样重要的数据库对象命名.这篇文章结合许多技术文章和资料,以及我自己的开发经验,对数据库对象的 ...
随机推荐
- 这些JS技巧,看看你是否都会用?
问题1:以下代码在浏览器控制台上会打印什么? var a = 10; function foo() { console.log(a); // ?? var a = 20; } foo(); 问题2:如 ...
- codeforces 1451D,一道有趣的博弈论问题
大家好,欢迎来到codeforces专题. 今天选择的问题是Contest 1451场的D题,这是一道有趣简单的伪博弈论问题,全场通过的人有3203人.难度不太高,依旧以思维为主,坑不多,非常友好. ...
- Linux 下挂载新硬盘方法(转)
1.关闭服务器加上新硬盘 2.启动服务器,以root用户登录 3.查看硬盘信息 #fdisk -l Disk /dev/sda: 42.9 GB, 42949672960 bytes 255 ...
- k8s之API Server认证
集群安全性 在生产环境中,必须保障集群用户的角色以及权限问题,不能给所有用户都赋予管理员权限. 1.集群的安全性必须考虑如下几个目标 (1)保证容器与其所在宿主机的隔离 (2)限制容器给基础设置或其他 ...
- 如果你的 HTML 里全是 div,那就要小心了
做前端开发的同学都知道,一个网页的基本组成部分是 HTML,JavaScript 和 CSS.开发人员通常更关注 JavaScript 和 CSS ,实践着各种语言规范和设计模式.对于 HTML 的关 ...
- halcon案例学习之cbm_label_simple
*cbm_label_simple 程序说明:*这个示例程序展示了如何使用基于组件的匹配来定位复合对象.在这种情况下,应该在图像中找到一个标签,用户既不知道其中的组件,也不知道它们之间的关系.因此,创 ...
- 【MySQL 高级】知识拓展
MySQL高级 知识拓展 MySQL高级 知识拓展 数据量 和 B+树 的关系 事务隔离级别集底层原理MVCC 唯一索引和普通索引的关键不同点 MRR:multi range read 练习和总结
- 3.利用jmeter制作性能脚本
jmeter录制脚本示例 jmeter手工脚本编写与调试 业务逻辑实现之逻辑控制器 业务脚本参数化实现 jmeter处理cookie beanshell脚本 ...
- RPC 是通信协议吗 ?→ 我们来看下它的演进过程
开心一刻 一实习小护士给我挂针,拿着针在我胳膊上扎了好几针也没找到血管 但这位小姑娘真镇定啊,表情严肃认真,势有不扎到血管不罢休的意思 十几针之后,我忍着剧痛,带着敬畏的表情问小护士:你这针法跟容嬷嬷 ...
- alter column和modify column
5.6中,发现其实alter column 和更改modify column 步骤是一样的 mysql> create table xs(name varchar(12),age int def ...