開源免費基於API 的簡單圖床–AUXPI
GitHub:https://github.com/aimerforreimu/AUXPI/
demo:https://test.0w0.tn/
功能特色
支持web 上傳圖片
支持API 上傳圖片
支持圖床:
搜狗
新浪(私有+公共)
SMMS
奇虎(360)
百度
阿里
京東
Upload.cc
Flickr
網易
掘金
本地
安裝教程
如果您是空白的vps,您可以直接使用一鍵腳本進行安裝,安裝教程
注意此腳本會給您安裝Nginx 和Mysql,請確保您的服務器是乾淨的
如果您想手動安裝,可以參考安裝wiki
演示站點為https://test.0w0.tn/
演示站點管理員賬戶:
用戶名:admin123
密碼:admin123
郵箱:auxpi@0w0.tn
開發人員&&折騰用戶
如果您想要從源代碼中構建auxpi,您可以按照下面的教程進行構建,如果您僅僅想使用auxpi,這一段您可以跳過
請注意你,請確保您的電腦上有Go 環境。
從源碼中構建
使用腳本構建
在最近一次更新中加入了批量編譯打包的腳本,您可以使用此腳本進行代碼的構建
bash build.sh all #編譯所有平台的程序
bash build.sh mac #編譯mac程序
bash build.sh windows #編譯Windows程序
bash build.sh linux #編譯linux程序
bash build.sh all 2.2.0 clear #編譯程序,分別打包所有的平台的項目,2.2.0為版本號,清空編譯以後文件,只保留壓縮包
bahs build.sh help #查看幫助
打包前端
cd resource
yarn install
yarn run build
使用Bee工具運行程序
cd $GOPATH/src
git clone git@github.com:aimerforreimu/AUXPI.git
cd AUXPI/
bee run auxpi
交叉編譯
#Mac/Windows環境編譯成Linux程序
GOOS=linux GOARCH=amd64 bee pack
#Mac/Linux環境編譯Windows程序
GOOS=windows GOARCH=amd64 bee pack
#Windows/Linux編譯Mac程序
GOOS=darwin GOARCH=amd64 bee pack
更多交叉編譯請參考Go交叉編譯
二次開發規範
如果這個項目讓您感覺還不錯,您想二次開發一下或者想為這個項目提交PR
1.命名規範
函數,私有變量必須採用小駝峰方式進行命名即sendMail(),userInfo
共有變量需要使用大駝峰方式命名
結構體,接口必須使用大駝峰方式進行命名
2.代碼組織
最好請按照這個下面說明的結構去組織您的代碼
中間件請存放在middleware 文件夾中
api 請按照版本號放在controller/api/v(0-9)/中,所有api 除去auth 都不能進行模板引擎的渲染和操作,只允許輸出json
如果需要渲染模板引擎,請直接在controller/ 下面建立對應的controller
utils 下面的各種工具文件不允許與models 下面的文件耦合在一起,如果要為models 編寫工具,請放到tools 下
all.go 中只允許寫入經常被引入,需要格式化成json , xml 等格式的結構體
.
├── LICENSE
├── README.md
├── auxpiAll
├── bootstrap
├── build
├── build.sh
├── conf
├── controllers
├── install.sh
├── log
├── main.go
├── middleware
├── models
├── pem
├── resource
├── routers
├── server
├── static
├── tests
├── tools
├── utils
└── views
API 上傳
其實當時寫這個程序的時候沒有想要寫前端的頁面,是看到了另一位大佬的圖床,感覺這個前端頁面很好看才寫網頁版上傳,本來想直接寫個API 服務.
API 上傳實例
圖片上傳V1 接口
功能圖片上傳接口
HTTP請求方式POST
URL http://yourname/api/v1/upload
請求參數
參數名稱類型是否必須描述
image File是表單名稱,上傳圖片
token String是認證所必須的token ,如果站在沒有開啟則留空即可
apiSelect String是所選擇的API類型
apiSelect可選參數
apiSelect可選參數參數說明
SouGou搜狗圖床
Sina新浪圖床
Smms SMMS圖床
成功上傳返回
{
“code”: 200,
“msg”: “上傳成功”,
“data”: {
“name”: “Snipaste_2018-08-28_01-17-58.png”,
“url”: “https://img04. sogoucdn.com/app/a/100520146/0dcb98aadb59c6b29dc0832eb7cc094a”
}
}
{
“code”: 200,
“msg”: “上傳成功”,
“data”: {
“name”: “Snipaste_2018-08-28_01-17-58. png”,
“url”: “https://i.loli.net/2018/11/05/5be038b1b4af6.png”
}
}
失敗返回值
上傳出錯返回值
{
“code”: 500,
“msg”: “上傳失敗”
}
API未開啟返回值
{
“code”: 405,
“msg”: “Method not allowed”
}
Token驗證失敗返回值
{
“code”: 403,
“msg”: “Forbidden”
}
選擇文件為空返回值
{
“code”: 500,
“msg”: “No files were uploaded.”
}
文件太大返回值
{
“code”: 500,
“msg”: “File is too large.”
}
TODO
API 上傳
API 自動文檔
API v2 版本分發上傳,返回所有圖床儲存鏈接
用戶系統
前後端分離,Vue 驅動前端
後台控制
本地上傳,各大平台對接儲存
使用MySQL 而不是JSON
說明
本項目是學習Go 的過程中,邊學邊寫出來的程序,可能存在bug 連篇,邏輯讓人無法接受,南轅北轍,代碼無法讓人直視等副作用。