下面由laravel/" target="_blank">laravel教程栏目给大家介绍laravel 怎么集成 github 来存储文件,希望对大家有所帮助!
GitHub API 介绍
接口文档:docs.github.com/en/rest
需要用到的是功能十分强大的 GitHub API,这里只需要 创建或更新文件内容 接口。
创建或更新文件内容
请求地址:api.github.com/repos/{owner}/{repo}/contents/{path}
请求方式:PUT
参数
名称 | 类型 | 位置 | 描述 |
---|---|---|---|
accept | string | header | 建议设置为 application/vnd.github.v3+json |
owner | string | path | 用户名 |
repo | string | path | 仓库名 |
path | string | path | 文件存储路径 |
message | string | body | 必填 - The commit message |
content | string | body | 必填 - 新文件内容,使用 Base64 编码 |
sha | string | body | 如果要更新文件,则必填 - 被替换文件的 blob SHA |
branch | string | body | 分支名称 - 版本库的默认分支通常是 master |
committer | object | body | 提交人 - 默认为已认证的用户 |
author | object | body | 文件的作者 - 默认为 committer,如省略 committer,则为认证的用户 |
committer 对象的属性
名称 | 描述 |
---|---|
name (string) | 必填 - 提交的作者或提交者的名字。如果省略 name 会收到 422 状态代码 |
email (string) | 必填 - 提交的作者或提交者的电子邮件。如果省略 email 会收到 422 状态代码 |
date (string) |
author 对象的属性
名称 | 描述 |
---|---|
name (string) | 必填 - 提交的作者或提交者的名字。如果省略 name 会收到 422 状态代码 |
email (string) | 必填 - 提交的作者或提交者的电子邮件。如果省略 email 会收到 422 状态代码 |
date (string) |
鉴权
官方提供了三种方式:
Basic authentication - 用户名和密码
OAuth2 Token - token
OAuth2 key/secret - client_id 和 client_secret (只支持查询)
推荐使用第 2 种方式。
Settings > Developer settings > Personal access tokens > Generate new token
生成的 token 要保存好,只显示一次。
一定要把仓库设置为公开的,目的是能够使用 jsDelivr CDN 加速。
使用 GitHub 仓库作为图床,存在的问题是国内访问 GitHub 的速度很慢,可以利用 jsDelivr CDN 来加速访问。jsDelivr 是一个免费开源的 CDN 解决方案,该平台是首个打通中国大陆与海外的免费 CDN 服务,拥有中国政府颁发的 ICP 许可证,无须担心中国防火墙问题而影响使用。使用 jsDelivr 加速访问,需要将自定义域名设置为 https://cdn.jsdelivr.net/gh/用户名/图床仓库名。
Laravel 代码
需要设置几个配置参数,建议放到 .env 文件中。
GITHUB_FILE_REPOSITORY=YOUR_REPOSITORY GITHUB_FILE_BRANCH=master GITHUB_FILE_TOKEN=YOUR_TOKEN GITHUB_FILE_PATH=YOUR_PATH GITHUB_FILE_NAME=1 GITHUB_FILE_COMMIT_MESSAGE="YOUR COMMIT MESSAGE"