mobinqwq / auxpi

🍭 集合多家 API 的新一代图床

Home Page:https://test.demo-1s.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

AUXPI

基于 API 的简单图床

GitHub issues GitHub forks GitHub stars GitHub license

本项目使用 beego + vue + element-ui 进行开发

    _       __  __  ___ _____
    /_\  /\ /\ \/ / / _ \\_   \
   //_\\/ / \ \  / / /_)/ / /\/
/  _  \ \_/ /  \/ ___/\/ /_
\_/ \_/\___/_/\_\/   \____/

🍭 A NEW API IMAGES STORE TOOL 🍭



功能 特色

  • 支持 web 上传图片

  • 支持 API 上传图片

  • 支持图床:

    • 搜狗
    • 新浪 (私有+公共)
    • SMMS
    • 奇虎 (360)
    • 百度
    • 阿里
    • 京东
    • Upload.cc
    • Flickr
    • 网易
    • 掘金
    • 本地
  • 各种自由定制请看下面的截图

项目截图

首页

管理员后台

用户后台

设置页面


如果您感觉不错,请您点个 Star,您的 Star 是对我最大的鼓励 (认真脸)

有问题请到 Issue 中提出

官方站点为 AuXpI 图床

安装教程

如果您是空白的 vps,您可以直接使用一键脚本进行安装,安装教程

注意此脚本会给您安装 Nginx 和 Mysql,请确保您的服务器是干净的

https://github.com/aimerforreimu/AUXPI/wiki/%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E8%84%9A%E6%9C%AC

如果您想手动安装,可以参考安装 wiki

https://github.com/aimerforreimu/AUXPI/wiki/%E5%9B%BE%E5%BA%8A%E9%85%8D%E7%BD%AE

演示站点为 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 连篇 ,逻辑让人无法接受,南辕北辙,代码无法让人直视等副作用。

致敬

wisp-x

astaxie

LICENSE

GNU General Public License v3.0

About

🍭 集合多家 API 的新一代图床

https://test.demo-1s.com

License:GNU General Public License v3.0


Languages

Language:Go 71.2%Language:Vue 20.6%Language:CSS 6.4%Language:Shell 1.1%Language:HTML 0.6%