Inhaltsverzeichnis
Stellen Sie sicher, dass das Lager öffentlich ist, damit es mit jsDelivr CDN beschleunigt werden kann. " >Stellen Sie sicher, dass das Lager öffentlich ist, damit es mit jsDelivr CDN beschleunigt werden kann.
Heim PHP-Framework Laravel Sprechen Sie darüber, wie Laravel GitHub zum Speichern von Dateien integriert

Sprechen Sie darüber, wie Laravel GitHub zum Speichern von Dateien integriert

Jan 07, 2022 pm 02:52 PM
github laravel

erfahren Sie, wie Laravel Github zum Speichern von Dateien integriert. Ich hoffe, dass es für alle hilfreich ist!

GitHub API-Einführung

Schnittstellendokumentation: docs.github.com/en/restSie müssen die sehr leistungsstarke GitHub-API verwenden, bei der Sie nur die Dateiinhaltsschnittstelle erstellen oder aktualisieren müssen.

Dateiinhalt erstellen oder aktualisieren

Anfrageadresse: api.github.com/repos/{owner}/{repo}/contents/{path}

  • Anfragemethode: PUT

  • 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 对象的属性

    Parameter🎜owner🎜🎜string🎜🎜path🎜🎜username🎜🎜🎜repo🎜🎜 string🎜🎜path🎜🎜Warehouse-Name🎜🎜🎜path🎜🎜string🎜🎜path🎜🎜Dateispeicherpfad🎜🎜🎜message 🎜🎜string 🎜🎜body🎜🎜🎜Erforderlich🎜 – Die Commit-Nachricht🎜🎜🎜content🎜🎜string🎜🎜body🎜🎜🎜Erforderlich🎜 – Der neue Dateiinhalt, codiert mit 🎜Base64 🎜🎜 🎜🎜sha🎜🎜string🎜🎜body🎜🎜🎜Erforderlich, wenn Sie die Datei aktualisieren möchten🎜 - Blob SHA der ersetzten Datei🎜🎜🎜branch code>🎜🎜string🎜🎜body🎜🎜Zweigname – Der Standardzweig des Repositorys ist normalerweise <code>master🎜🎜🎜committer🎜🎜object🎜🎜 body🎜🎜 Absender – Der Standardwert ist der authentifizierte Benutzer 🎜🎜🎜author🎜🎜object🎜🎜body🎜🎜Der Autor der Datei – Der Standardwert ist committer , wenn committer ist, handelt es sich um den authentifizierten Benutzer🎜🎜🎜🎜🎜committer-Attribut des Objekts🎜
    名称 描述
    name (string) 必填 - 提交的作者或提交者的名字。如果省略 name 会收到 422 状态代码
    email (string) 必填 - 提交的作者或提交者的电子邮件。如果省略 email 会收到 422 状态代码
    date
    accept
    Name Typ Ort Beschreibung
    string🎜🎜header🎜🎜Es wird empfohlen, es auf application/vnd .github.v3+json🎜🎜
    🎜🎜name (Zeichenfolge)🎜🎜🎜Erforderlich🎜 – Der Name des Autors bzw. Einreicher der Einreichung. Wenn name weggelassen wird, erhalten Sie den Statuscode 422 🎜🎜🎜email (string)🎜🎜🎜erforderlich🎜 – der Autor der Einreichung oder die E-Mail-Adresse des Einreichers. Wenn email weggelassen wird, erhalten Sie den Statuscode 422 🎜🎜🎜date (Zeichenfolge)🎜🎜🎜🎜🎜🎜🎜 🎜author Attribute des Objekts🎜
    Name Beschreibung
    🎜🎜name (string)🎜🎜🎜Erforderlich🎜 – Der Name des Autors oder Einreichers der Einreichung. Wenn name weggelassen wird, erhalten Sie den Statuscode 422 🎜🎜🎜email (string)🎜🎜🎜erforderlich🎜 – der Autor der Einreichung oder die E-Mail-Adresse des Einreichers. Wenn email weggelassen wird, erhalten Sie den Statuscode 422 🎜🎜🎜date (Zeichenfolge)🎜🎜🎜🎜🎜🎜🎜

    Authentifizierung

    Es wird empfohlen, die zweite Methode zu verwenden.

    • Token festlegen

    • Einstellungen > Entwicklereinstellungen > Neues Token generieren
    • Das generierte Token sollte nur einmal gespeichert und angezeigt werden.

    Erstellen Sie ein Lager

    Bei der Verwendung des GitHub-Warehouses als Image-Bett besteht das Problem darin, dass der Zugriff auf GitHub in China sehr langsam ist. Sie können jsDelivr CDN verwenden, um den Zugriff zu beschleunigen. jsDelivr ist eine kostenlose und quelloffene CDN-Lösung. Die Plattform ist der erste kostenlose CDN-Dienst, der das chinesische Festland mit dem Ausland verbindet. Sie verfügt über eine von der chinesischen Regierung ausgestellte ICP-Lizenz, sodass Sie sich über die Verwendung der Great Firewall keine Sorgen machen müssen von China. Um jsDelivr zur Beschleunigung des Zugriffs zu verwenden, müssen Sie den benutzerdefinierten Domänennamen auf https://cdn.jsdelivr.net/gh/username/image Bed Warehouse-Name festlegen.

    Sprechen Sie darüber, wie Laravel GitHub zum Speichern von Dateien integriertLaravel-Code

    muss mehrere Konfigurationsparameter festlegen. Es wird empfohlen, diese in die Datei .env einzufügen.

    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"
    Nach dem Login kopieren
    Dann erstellen Sie eine Konfigurationsdatei unter config, ich habe eine github-file.php-Konfigurationsdatei erstellt
    <?php
    return [
     /**
     * GitHub 仓库
     */
     &#39;repository&#39; => env(&#39;GITHUB_FILE_REPOSITORY&#39;, &#39;&#39;),
    
     /**
     * 分支
     */
     &#39;branch&#39; => env(&#39;GITHUB_FILE_BRANCH&#39;, &#39;master&#39;),
    
     /**
     * Personal access token
     */
     &#39;token&#39; => env(&#39;GITHUB_FILE_TOKEN&#39;, &#39;&#39;),
    
     /**
     * 存储路径,若 GitHub 仓库中没有,则自动创建
     */
     &#39;path&#39; => env(&#39;GITHUB_FILE_PATH&#39;, &#39;&#39;),
    
     /**
     * 自定义域名
     * 若不定义则使用 https://raw.githubusercontent.com/ 出于某些原因可能图片加载会很慢,甚至失败
     * 建议使用 https://cdn.jsdelivr.net/gh/ 加速
     */
     &#39;domain&#39; => env(&#39;GITHUB_FILE_DOMAIN&#39;, &#39;https://cdn.jsdelivr.net/gh/&#39;),
    
     /**
     * 文件命名
     * 1 - 以时间戳方式重命名
     * 2 - 以随机字符串方式重命名
     * 3 - 保持原名
     * ......
     */
     &#39;name&#39; => env(&#39;GITHUB_FILE_NAME&#39;, 1),
    
     /**
     * commit 记录
     */
     &#39;commit_message&#39; => env(&#39;GITHUB_FILE_COMMIT_MESSAGE&#39;, &#39;&#39;),];
    Nach dem Login kopieren

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

    Verwenden Sie bei Bedarf UploadToGithub

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

    https://cdn.jsdelivr.net/gh/用户名/图床仓库名

    Laravel 代码

    需要设置几个配置参数,建议放到 .env 文件中。

    rrreee

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

    rrreee

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

    rrreee

    在需要的地方使用 UploadToGithub

    Die neuesten fünf Laravel-Video-Tutorials

    (empfohlen)

    Name Beschreibung

    Das obige ist der detaillierte Inhalt vonSprechen Sie darüber, wie Laravel GitHub zum Speichern von Dateien integriert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    Video Face Swap

    Video Face Swap

    Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    Wie bekomme ich den Rückgabecode, wenn das Senden von E -Mails in Laravel fehlschlägt? Wie bekomme ich den Rückgabecode, wenn das Senden von E -Mails in Laravel fehlschlägt? Apr 01, 2025 pm 02:45 PM

    Methode zum Abholen des Rücksendecode, wenn das Senden von Laravel -E -Mails fehlschlägt. Wenn Sie Laravel zur Entwicklung von Anwendungen verwenden, stellen Sie häufig Situationen auf, in denen Sie Überprüfungscodes senden müssen. Und in Wirklichkeit ...

    Laravel eloquent orm bei bangla partieller Modellsuche) Laravel eloquent orm bei bangla partieller Modellsuche) Apr 08, 2025 pm 02:06 PM

    Laraveleloquent-Modellab Abruf: Das Erhalten von Datenbankdaten Eloquentorm bietet eine prägnante und leicht verständliche Möglichkeit, die Datenbank zu bedienen. In diesem Artikel werden verschiedene eloquente Modellsuchtechniken im Detail eingeführt, um Daten aus der Datenbank effizient zu erhalten. 1. Holen Sie sich alle Aufzeichnungen. Verwenden Sie die Methode All (), um alle Datensätze in der Datenbanktabelle zu erhalten: UseApp \ Models \ post; $ posts = post :: all (); Dies wird eine Sammlung zurückgeben. Sie können mit der Foreach-Schleife oder anderen Sammelmethoden auf Daten zugreifen: foreach ($ postas $ post) {echo $ post->

    Git vs. GitHub: Versionskontrolle und Code -Hosting Git vs. GitHub: Versionskontrolle und Code -Hosting Apr 11, 2025 am 11:33 AM

    Git ist ein Versionskontrollsystem, und GitHub ist eine GIT-basierte Code-Hosting-Plattform. Git wird verwendet, um Codeversionen zu verwalten und unterstützt lokale Operationen. GitHub bietet Online -Zusammenarbeitstools wie das Problem mit der Ausgabe und PullRequest.

    Laravels Geospatial: Optimierung interaktiver Karten und großen Datenmengen Laravels Geospatial: Optimierung interaktiver Karten und großen Datenmengen Apr 08, 2025 pm 12:24 PM

    Verarbeiten Sie 7 Millionen Aufzeichnungen effizient und erstellen Sie interaktive Karten mit Geospatial -Technologie. In diesem Artikel wird untersucht, wie über 7 Millionen Datensätze mithilfe von Laravel und MySQL effizient verarbeitet und in interaktive Kartenvisualisierungen umgewandelt werden können. Erstes Herausforderungsprojektanforderungen: Mit 7 Millionen Datensätzen in der MySQL -Datenbank wertvolle Erkenntnisse extrahieren. Viele Menschen erwägen zunächst Programmiersprachen, aber ignorieren die Datenbank selbst: Kann sie den Anforderungen erfüllen? Ist Datenmigration oder strukturelle Anpassung erforderlich? Kann MySQL einer so großen Datenbelastung standhalten? Voranalyse: Schlüsselfilter und Eigenschaften müssen identifiziert werden. Nach der Analyse wurde festgestellt, dass nur wenige Attribute mit der Lösung zusammenhängen. Wir haben die Machbarkeit des Filters überprüft und einige Einschränkungen festgelegt, um die Suche zu optimieren. Kartensuche basierend auf der Stadt

    Laravel -Datenbank Migration begegnet doppelte Klassendefinition: Wie beheben Sie die doppelte Erzeugung von Migrationsdateien und Klassennamenkonflikten? Laravel -Datenbank Migration begegnet doppelte Klassendefinition: Wie beheben Sie die doppelte Erzeugung von Migrationsdateien und Klassennamenkonflikten? Apr 01, 2025 pm 12:21 PM

    Ein Problem der doppelten Klassendefinition während der Laravel -Datenbankmigration tritt auf. Bei Verwendung des Laravel -Frameworks für die Datenbankmigration können Entwickler "Klassen" verwendet ...

    Wie kann man die Gültigkeit von Redis -Verbindungen im Laravel6 -Projekt effektiv überprüfen? Wie kann man die Gültigkeit von Redis -Verbindungen im Laravel6 -Projekt effektiv überprüfen? Apr 01, 2025 pm 02:00 PM

    Wie man die Gültigkeit von Redis -Verbindungen in Laravel6 -Projekten überprüft, ist ein häufiges Problem, insbesondere wenn Projekte auf Redis für die Geschäftsverarbeitung angewiesen sind. Das Folgende ist ...

    Laravel und das Backend: Logik der Webanwendungen mit Strom versorgen Laravel und das Backend: Logik der Webanwendungen mit Strom versorgen Apr 11, 2025 am 11:29 AM

    Wie spielt Laravel eine Rolle in der Backend -Logik? Es vereinfacht und verbessert die Backend -Entwicklung durch Routing -Systeme, eloquentorm, Authentifizierung und Autorisierung, Ereignis und Zuhörer sowie Leistungsoptimierung. 1. Das Routing -System ermöglicht die Definition der URL -Struktur und die Anforderungsverarbeitungslogik. 2.Loquentorm vereinfacht die Datenbankinteraktion. 3. Das Authentifizierungs- und Autorisierungssystem ist für die Benutzerverwaltung geeignet. 4. Die Ereignis und der Hörer implementieren locker gekoppelte Codestruktur. 5. Leistungsoptimierung verbessert die Anwendungseffizienz durch Zwischenspeicherung und Warteschlange.

    Ist Git das gleiche wie GitHub? Ist Git das gleiche wie GitHub? Apr 08, 2025 am 12:13 AM

    Git und Github sind nicht dasselbe. Git ist ein Versionskontrollsystem, und GitHub ist eine GIT-basierte Code-Hosting-Plattform. Git wird verwendet, um Codeversionen zu verwalten, und GitHub bietet eine Online -Zusammenarbeit.

    See all articles