oss-server 小型物件儲存系統

Trust Me發表於2018-06-12

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 小型物件儲存系統

oss-server 小型物件儲存系統

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 !!!!

碼雲:gitee.com/xiaoym/oss-…

GitHub:github.com/xiaoymin/os…

相關文章