項目介紹
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
module | 子產品名稱,可為空,很多情況下,我們希望分子產品來存儲我們的上傳資源,這個時候,可以使用該module字段,例如: ,此時,oss生成的全路徑是: |
上傳檔案名稱,可以是數組多個檔案 |
{
"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-serverGitHub:
https://github.com/xiaoymin/oss-server