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

参与贡献

  1. Fork 本项目

  2. 新建 Feat_xxx 分支

  3. 提交代码

  4. 新建 Pull Request

项目地址

如果项目对您有帮助,请前往项目地址给个Star !!!!

码云:https://gitee.com/xiaoym/oss-server

GitHub:https://github.com/xiaoymin/oss-server

oss-server 小型对象存储系统的更多相关文章

  1. go语言实现分布式对象存储系统之单体对象存储

    对象存储 基本概念 主流存储类型分为三种:块存储.文件存储以及对象存储 NAS(文件存储):Network Attached storage,提供了存储功能和文件系统的网络服务器,客户端可以访问NAS ...

  2. Swift是一个提供RESTful HTTP接口的对象存储系统

    Swift是一个提供RESTful HTTP接口的对象存储系统,最初起源于Rackspace的Cloud Files,目的是为了提供一个和AWS S3竞争的服务. Swift于2010年开源,是Ope ...

  3. SQL Server 查看对象之间的引用关系

    前期准备: use studioA;           go create table T(X int,Y int); insert into T(X,Y) values(1,1),(2,2);  ...

  4. sql server 查看对象最后修改时间

    sql server 查看对象最后修改时间,根据最后修改时间排序 存储过程 SELECT * FROM sys.all_objects WHERE  TYPE='P' ORDER BY modify_ ...

  5. 查询Sql Server数据库对象结构

    查询Sql Server数据库对象结构 查询数据库 查询架构 查询表 查询列 查询存储过程 查询视图 1.查询某一服务器下所有数据库 select t.[name] as 数据库 from sys.d ...

  6. Swift是一个提供RESTful HTTP接口的对象存储系统,目的是为了提供一个和AWS S3竞争的服务

    Swift是一个提供RESTful HTTP接口的对象存储系统,最初起源于Rackspace的Cloud Files,目的是为了提供一个和AWS S3竞争的服务. Swift于2010年开源,是Ope ...

  7. SQL Server判断对象是否存在 (if exists (select * from sysobjects )(转)

    1 判断数据库是否存在Sql代码 if exists (select * from sys.databases where name = ’数据库名’)    drop database [数据库名] ...

  8. Tiny server:小型Web服务器

    一.背景 csapp的网络编程粗略的介绍了关于网络编程的一些知识,在最后的一节主要就实现了一个小型的Webserver.这个server名叫Tiny,它是一个小型的可是功能齐全的Webserver.在 ...

  9. SQL Server 数据库对象命名参考

    一. 引言 编码规范是一个优秀程序员的必备素质,然而,有很多人非常注重程序中变量.方法.类的命名,却忽视了同样重要的数据库对象命名.这篇文章结合许多技术文章和资料,以及我自己的开发经验,对数据库对象的 ...

随机推荐

  1. LeapMotion控制器 java语言开发笔记--(连接控制器)

    (1)为了连接LeapMotion控制器,创建controller对象,这个对象自动创建与控制器的服务或者后台程序连接,然后捕获数据提供给你的应用程序.可以使用该对象来获取连接信息. (2)获取Fra ...

  2. mysql plugin

    mysql plugin 概要 mysql可以通过启动参数,系统命令mysql_install,mysql命令install plugin来加载指定的插件 mysql的存储引擎被设计成插件式,可以根据 ...

  3. 风炫安全web安全学习第三十节课 命令执行&代码执行基础

    风炫安全web安全学习第三十节课 命令执行&代码执行基础 代码执行&命令执行 RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统. 远程系统命令执行 ...

  4. C#处理医学图像(一):基于Hessian矩阵的血管肺纹理骨骼增强对比

    在医院实际环境中,经常遇到有问题的患者,对于一些特殊的场景,比如骨折,肺结节,心脑血管问题 需要图像对比增强来更为清晰的显示病灶助于医生确诊,先看效果: 肺纹理增强: 肺结节增强: 血管对比增强: 骨 ...

  5. 【Flutter】布局类组件之对齐和相对定位

    前言 如果只想简单的调整一个子元素在父元素中的位置的话,使用Align组件会更简单一些. 接口描述 const Align({ Key key, // 需要一个AlignmentGeometry类型的 ...

  6. Sentry(v20.12.1) K8S 云原生架构探索,SENTRY FOR JAVASCRIPT Source Maps 详解

    系列 Sentry-Go SDK 中文实践指南 一起来刷 Sentry For Go 官方文档之 Enriching Events Snuba:Sentry 新的搜索基础设施(基于 ClickHous ...

  7. python模块详解 | filecmp

    简介: filecmp是python内置的一个模块,用于比较文件及文件夹的内容,它是一个轻量级的工具,使用非常简单 两个主要的方法: filecmp.cmp(f1, f2[, shallow]) 比较 ...

  8. ps ww

    [root@ma ~]# ps ww -p 1 PID TTY STAT TIME COMMAND 1 ? Ss 0:01 /sbin/init[root@ma ~]# ps -p 1 PID TTY ...

  9. 【Linux】如何查找命令及历史记录history

    如何查找命令及历史记录 文章目录 如何查找命令及历史记录 1.如何找到一个命令 2.命令的历史记录 3.一些实用的快捷键 4.小结 5.参考资料 如何找到一个命令.命令的历史记录.一些实用的快捷键.总 ...

  10. kill 指令的执行原理

    kill 指令有两种写法 " kill query + 线程 id "." kill connection(可缺省) + 线程 id ".分别表示关闭指定线程正 ...