返回顶部
首页 > 资讯 > 精选 >Laravel怎么集成GitHub来存储文件
  • 402
分享到

Laravel怎么集成GitHub来存储文件

2023-06-26 03:06:50 402人浏览 独家记忆
摘要

这篇文章主要讲解了“Laravel怎么集成GitHub来存储文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Laravel怎么集成gitHub来存储文件”吧!GitHub API 介绍接口

这篇文章主要讲解了“Laravel怎么集成GitHub来存储文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Laravel怎么集成gitHub来存储文件”吧!

GitHub API 介绍

接口文档:docs.github.com/en/rest

需要用到的是功能十分强大的 GitHub api,这里只需要 创建或更新文件内容 接口。

创建或更新文件内容

  • 请求地址:api.github.com/repos/{owner}/{repo}/contents/{path}

  • 请求方式:PUT

参数

名称类型位置描述
acceptstringheader建议设置为 application/vnd.github.v3+JSON
ownerstringpath用户名
repostringpath仓库名
pathstringpath文件存储路径
messagestringbody必填 - The commit message
contentstringbody必填 - 新文件内容,使用 Base64 编码
shastringbody如果要更新文件,则必填 - 被替换文件的 blob SHA
branchstringbody分支名称 - 版本库的默认分支通常是 master
committerobjectbody提交人 - 默认为已认证的用户
authorobjectbody文件的作者 - 默认为 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 - 用户名和密码

  • OAuth3 Token - token

  • OAuth3 key/secret - client_id 和 client_secret (只支持查询)

推荐使用第 2 种方式。

设置 token

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_REPOSITORYGITHUB_FILE_BRANCH=masterGITHUB_FILE_TOKEN=YOUR_TOKENGITHUB_FILE_PATH=YOUR_PATHGITHUB_FILE_NAME=1GITHUB_FILE_COMMIT_MESSAGE="YOUR COMMIT MESSAGE"

然后在 config 下创建一个配置文件,我创建了一个 github-file.PHP 配置文件

<?phpreturn [  'repository' => env('GITHUB_FILE_REPOSITORY', ''),  'branch' => env('GITHUB_FILE_BRANCH', 'master'),  'token' => env('GITHUB_FILE_TOKEN', ''),  'path' => env('GITHUB_FILE_PATH', ''),  'domain' => env('GITHUB_FILE_DOMAIN', 'Https://cdn.jsdelivr.net/gh/'),  'name' => env('GITHUB_FILE_NAME', 1),  'commit_message' => env('GITHUB_FILE_COMMIT_MESSAGE', ''),];

创建一个 Trait 以复用上传功能

<?phpnamespace App\Traits;use Exception;use Illuminate\Support\Str;use Illuminate\Support\Facades\Http;trait UploadToGithub{    public function uploadToGithub($file, $message = '')    {        $path = config('github-file.path') . '/' . $this->setFileName($file);        $repository = config('github-file.repository');        if ($file->isValid()) {            $url = "https://api.github.com/repos/$repository/contents/$path";            $response = Http::withToken(config('github-file.token'))->put($url, [                'message' => $message ?: config('github-file.commit_message'),                'content' => base64_encode(file_get_contents($file))            ]);            // 上传失败抛出一个错误,成功则返回 JSON            $body = $response->throw()->json();            // 上传成功后 GitHub API 返回的是 201,其实有了上一步这里的判断可以省略            if ($response->successful()) {                return config('github-file.domain')                    ? rtrim(config('github-file.domain'), '/') . '/' . trim($repository, '/') . '/' . ltrim($body['content']['path'], '/')                    : $body['content']['download_url'];            }        }        throw new Exception('未发现图片');    }        private function setFileName($file)    {        switch (config('github-file.name')) {            case 1:                return date('YmdHis', time()) . '.' . $file->getClientOriginalExtension();            case 2:                return Str::random(32) . '.' . $file->getClientOriginalExtension();            case 3:            default:                return $file->getClientOriginalName();        }    }}

在需要的地方使用 UploadToGithub

use UploadToGithub;public function updload(Request $request){    $url = $this->uploadToGithub($request->file('file-field-name'));        return response()->json([        'code' => 200,        'message' => '上传成功',        'data' => [            'url' => $url        ]    ]);}

感谢各位的阅读,以上就是“Laravel怎么集成GitHub来存储文件”的内容了,经过本文的学习后,相信大家对Laravel怎么集成GitHub来存储文件这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Laravel怎么集成GitHub来存储文件

本文链接: https://lsjlt.com/news/306619.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Laravel怎么集成GitHub来存储文件
    这篇文章主要讲解了“Laravel怎么集成GitHub来存储文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Laravel怎么集成GitHub来存储文件”吧!GitHub API 介绍接口...
    99+
    2023-06-26
  • Springboot怎么集成minio实现文件存储
    本篇内容主要讲解“Springboot怎么集成minio实现文件存储”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Springboot怎么集成minio实现文件存储”吧!MinIO 是一款基于G...
    99+
    2023-06-29
  • eclipse怎么集成github
    Eclipse是一个流行的Java集成开发环境,可以帮助开发人员高效地创建和管理Java应用程序。Github是一个流行的社交编程平台,提供代码托管、版本控制和协作功能。在本文中,我们将介绍将Eclipse和Github集成的步骤。步骤1:...
    99+
    2023-10-22
  • Laravel中的文件存储是什么
    在Laravel中,文件存储是指将文件上传到服务器或存储在本地文件系统中,并在需要时进行访问和管理。Laravel提供了便捷的文件存...
    99+
    2024-04-16
    Laravel
  • mongodb存储文件怎么存储
    MongoDB可以通过两种方法存储文件:1. 将文件存储为二进制数据(BSON):可以将文件转换为二进制格式,然后将其存储在Mong...
    99+
    2023-09-01
    mongodb
  • ASP 存储和 Laravel shell:如何实现无缝集成?
    ASP 存储和 Laravel shell 是两种不同的技术,但是它们可以通过无缝集成来实现更强大的功能。在本文中,我们将介绍如何将 ASP 存储和 Laravel shell 集成在一起,以便更好地管理您的应用程序数据。 ASP 存储是...
    99+
    2023-07-05
    存储 laravel shell
  • Springboot集成minio实现文件存储的实现代码
    目录1. 安装部署1.1 Linux 简单部署1.2 Docker 部署2. Spring boot 整合3. 问题记录4. 项目地址在我们平时做项目的时候,文件存储是个很常见的需求...
    99+
    2024-04-02
  • hadoop集群中文件储存位置怎么查看
    要查看Hadoop集群中文件的存储位置,可以使用Hadoop Shell命令或者Hadoop Web界面来查看。以下是两种方法: ...
    99+
    2024-04-02
  • matlab怎么存储txt文件
    在MATLAB中,可以使用fprintf函数来将数据保存到txt文件中。 例如,以下代码将一个矩阵保存到txt文件中: data =...
    99+
    2024-04-09
    matlab
  • Java 文件操作与云存储集成:探索无限可能
    一、Java 文件操作基础 在 Java 中,文件操作是一个基本且重要的功能。您可以使用 Java 类库中的 File 类和相关方法来创建、读取、写入和删除文件。File 类提供了丰富的 API,可以满足大多数的文件操作需求。 创建文...
    99+
    2024-02-26
    Java 文件操作、云存储集成、数据存储、数据管理、代码示例
  • mongodb怎么存储海量文件
    在MongoDB中存储海量文件,可以使用GridFS,它是MongoDB提供的一种存储大文件的机制。 GridFS将大文件分割成多个...
    99+
    2024-02-29
    mongodb
  • java文件流怎么保存成文件
    要将Java文件流保存为文件,可以使用FileOutputStream类。以下是保存Java文件流的示例代码:javaimport ...
    99+
    2023-10-21
    java
  • Beam怎么与各种数据存储系统集成
    Beam可以与各种数据存储系统集成,包括但不限于关系型数据库、NoSQL数据库、数据仓库和对象存储系统。以下是一些常见的数据存储系统...
    99+
    2024-04-09
    Beam
  • Win8使用VHD+BitLocker来存储机密文件
    在不使用第三方软件的情况下,Windows对单一文件夹的加密确实是有些困难的,但是自Windows Vista以来,就加入了BitLocker功能来保护磁盘的安全。在升级到Windows 8之后,更是可以直...
    99+
    2022-06-04
    机密 文件 VHD
  • 怎么将MAC的文件存储至NAS网络存储
    怎么将MAC的文件存储至NAS网络存储,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Mac OS电脑用户可以使用TNAS PC桌面客户端来管理TNAS的文件,操...
    99+
    2023-06-04
  • 怎么理解Laravel存储库模式
    这篇文章主要讲解了“怎么理解Laravel存储库模式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解Laravel存储库模式”吧!活动记录默认情况下,Laravel 使用 Active...
    99+
    2023-06-25
  • python怎么使用存储gridfs文件
    在python中使用存储gridfs文件的方法:1.新建python项目;2.导入gridfs模块;3.定义文件路径,创建文件对象;4.使用fs.files()方法存储文件;具体步骤如下:首先,打开python,并新建一个python项目;...
    99+
    2024-04-02
  • SpringBoot怎么整合Minio文件存储
    这篇“SpringBoot怎么整合Minio文件存储”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot怎么整...
    99+
    2023-06-29
  • ASP 文件和 Laravel 框架:如何实现无缝集成?
    随着Web应用程序的不断发展,越来越多的开发者们需要同时使用ASP文件和Laravel框架进行开发。ASP文件和Laravel框架都是非常好的工具,它们各自具备不同的优势,但是也有一些缺点。在实际开发过程中,如何实现无缝集成ASP文件和L...
    99+
    2023-09-01
    文件 laravel 框架
  • 怎么在github下载文件
    GitHub作为全球最大的开源社区,不仅提供了交互式代码托管和版本控制,还提供了多种下载方式,免费高效。在GitHub上下载文件,有多种方式可供选择,包括git clone、Download ZIP、使用浏览器等。下面,我们将详细介绍这些下...
    99+
    2023-10-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作