专栏首页开发实战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

参与贡献

  1. Fork 本项目
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

项目地址

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • swagger-bootstrap-ui 1.7.5 发布,Swagger前端 UI 实现

    swagger-bootstrap-ui 1.7.5 发布了。swagger-bootstrap-ui 是 Swagger 的前端 UI 实现,目的是替换 Sw...

    八一菜刀
  • swagger-bootstrap-ui的使用说明

    有些朋友在使用这个jar包的时候会出现接口出不来的情况,或者只出现ui默认的几个接口,项目的api接口没有出来,

    八一菜刀
  • FastDFS轻量级分布式存储文件系统

    FastDFS系统分为三个角色,跟踪服务器(tracker server),存储服务器(storage server),客户端(client).

    小土豆Yuki
  • mysqlbinlog命令详解 Part 8 指定 Server ID

    上节我们说到如何备份二进制文件时说到通过--read-from-remote-server 连接数据库,

    bsbforever
  • 使用 Nginx 对 ASP.NETCore网站 或 Docker 等进行反向代理

    Nginx 可以配置反向代理、负载均匀等, 其默认配置文件名为 nginx.conf 。

    痴者工良
  • 华为自研系统之后,对小米的冲击有多大?

    小米走的完全是市场主流的模式,利用开源的安卓系统,利用市场主流的高通处理器,然后根据自己对产品的理解组合在一起,同时采用线上营销的模式以高性价比的方式在市场对主...

    程序员互动联盟
  • Pillpack:颠覆医疗的线上药房

    大数据文摘
  • 2. C语言 -- printf 的花式操作

    (。・∀・)ノ゙嗨!大家好,我是呆博~很开心可以在这里给接着大家分享我的 C 语言学习笔记~因为微信对于代码块的支持并不是很好,所以代码部分以截图形式呈现,如果...

    谭庆波
  • 【Vue原理】依赖收集 - 源码版之引用数据类型

    这一篇内容是针对 引用数据类型的数据的 依赖收集分析,因为引用类型数据要复杂些,必须分开写

    神仙朱
  • Python入门(9)

    大家好,在我们学习了python的模块以后,我们几乎可以编写完整的Python应用程序,甚至面对一些相对复杂的应用需求,我们还能通过包和模块来搭建一个漂亮的系统...

    高一峰

扫码关注云+社区

领取腾讯云代金券