recherche
Maisoncadre phpLaravelParlez de la façon dont Laravel intègre GitHub pour stocker des fichiers

suivante vous présentera comment Laravel intègre github pour stocker des fichiers. J'espère qu'elle sera utile à tout le monde !

Introduction à l'API GitHub

Documentation de l'interface : docs.github.com/en/restVous devez utiliser la très puissante API GitHub, où il vous suffit de créer ou de mettre à jour l'interface de contenu des fichiers.

Créer ou mettre à jour le contenu du fichier

Adresse de demande : api.github.com/repos/{owner}/{repo}/contents/{path}

  • Méthode de demande : 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 对象的属性

    Paramètres🎜propriétaire🎜🎜string🎜🎜path🎜🎜username🎜🎜🎜repo🎜🎜 chaîne🎜🎜chemin🎜🎜nom de l'entrepôt🎜🎜🎜chemin🎜🎜chaîne🎜🎜chemin🎜🎜chemin de stockage des fichiers🎜🎜🎜message 🎜🎜string 🎜🎜body🎜🎜🎜Required🎜 - Le message de commit🎜🎜🎜content🎜🎜string🎜🎜body🎜🎜🎜Required🎜 - Le nouveau contenu du fichier, encodé en utilisant 🎜Base64 🎜🎜 🎜🎜sha🎜🎜string🎜🎜body🎜🎜🎜Obligatoire si vous souhaitez mettre à jour le fichier🎜 - blob SHA du fichier remplacé🎜🎜🎜branche code>🎜🎜string🎜🎜body🎜🎜Nom de la branche - La branche par défaut du référentiel est généralement <code>master🎜🎜🎜committer🎜🎜object🎜🎜 body🎜🎜 Auteur - La valeur par défaut est l'utilisateur authentifié 🎜🎜🎜author🎜🎜object🎜🎜body🎜🎜L'auteur du fichier - La valeur par défaut est committer , si committer, c'est l'attribut user authentifié🎜🎜🎜🎜🎜committer de l'objet🎜
    名称 描述
    name (string) 必填 - 提交的作者或提交者的名字。如果省略 name 会收到 422 状态代码
    email (string) 必填 - 提交的作者或提交者的电子邮件。如果省略 email 会收到 422 状态代码
    date
    accepter
    Nom Type Emplacement Description
    string🎜🎜header🎜🎜Il est recommandé de le définir sur application/vnd .github.v3+json🎜🎜
    🎜🎜name (string)🎜🎜🎜Obligatoire🎜 - Le nom de l'auteur ou l'auteur de la soumission. Si name est omis, vous recevrez le code de statut 422 🎜🎜🎜email (string)🎜🎜🎜required🎜 - le l'auteur de la soumission ou l'e-mail de l'auteur de la soumission. Si email est omis, vous recevrez le code de statut 422 🎜🎜🎜date (string)🎜🎜🎜🎜🎜🎜🎜 🎜auteur Attributs de l'objet🎜
    Nom Description
    🎜🎜name (string)🎜🎜🎜Obligatoire🎜 - Le nom de l'auteur ou de l'auteur de la soumission. Si name est omis, vous recevrez le code de statut 422 🎜🎜🎜email (string)🎜🎜🎜required🎜 - le l'auteur de la soumission ou l'e-mail de l'auteur de la soumission. Si email est omis, vous recevrez le code de statut 422 🎜🎜🎜date (string)🎜🎜🎜🎜🎜🎜🎜

    Authentification

    Fournit officiellement trois méthodes :

    • Authentification de base - nom d'utilisateur et mot de passe

    • OAuth2 Token - token

    • OAuth2 clé/secret - client_id et client_secret (prend uniquement en charge les requêtes)

    Il est recommandé d'utiliser la deuxième méthode.

    Définir le jeton

    Paramètres > Paramètres du développeur > Jetons d'accès personnels > Générer un nouveau jeton

    Parlez de la façon dont Laravel intègre GitHub pour stocker des fichiers

    Le jeton généré ne doit être enregistré et affiché qu'une seule fois.

    Créer un entrepôt

    Assurez-vous de définir l'entrepôt comme public afin qu'il puisse être accéléré à l'aide du CDN jsDelivr.

    En utilisant l'entrepôt GitHub comme lit d'images, le problème est que l'accès à GitHub en Chine est très lent. Vous pouvez utiliser jsDelivr CDN pour accélérer l'accès. jsDelivr est une solution CDN gratuite et open source. La plateforme est le premier service CDN gratuit à connecter la Chine continentale et l'étranger. Elle dispose d'une licence ICP délivrée par le gouvernement chinois, vous n'avez donc pas à vous soucier de l'utilisation du Grand Pare-feu. de Chine. Pour utiliser jsDelivr pour accélérer l'accès, vous devez définir le nom de domaine personnalisé sur https://cdn.jsdelivr.net/gh/username/image bed Warehouse Name. 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"

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

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

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

    <?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('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('未发现图片');
        }
    
        /**
         * 生成图片名称
         * @param $file
         * @return mixed|string
         */
        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

    Le code Laravel doit définir plusieurs paramètres de configuration, il est recommandé de les mettre dans le fichier .env.

    use UploadToGithub;public function updload(Request $request){
        $url = $this->uploadToGithub($request->file('file-field-name'));
        
        return response()->json([
            'code' => 200,
            'message' => '上传成功',
            'data' => [
                'url' => $url
            ]
        ]);}
    Ensuite créez un fichier de configuration sous config, j'ai créé un fichier de configuration github-file.php

    rrreee
    Créez un Trait Réutilisez le fonction de téléchargement

    rrreeeUtilisez UploadToGithub si nécessairerrreee

    🎜🎜🎜Les cinq derniers didacticiels vidéo Laravel🎜🎜🎜 (recommandé) 🎜🎜🎜🎜🎜
    Nom Description

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
    Partage des compétences de cadre LaravelPartage des compétences de cadre LaravelApr 18, 2025 pm 01:12 PM

    À cette époque de progrès technologique continu, la maîtrise des cadres avancés est crucial pour les programmeurs modernes. Cet article vous aidera à améliorer vos compétences en développement en partageant des techniques peu connues dans le cadre de Laravel. Connu pour sa syntaxe élégante et une large gamme de fonctionnalités, cet article va creuser ses fonctionnalités puissantes et fournir des conseils et des astuces pratiques pour vous aider à créer des applications Web efficaces et maintenables.

    La différence entre Laravel et ThinkPhpLa différence entre Laravel et ThinkPhpApr 18, 2025 pm 01:09 PM

    Laravel et ThinkPHP sont tous deux des cadres PHP populaires et ont leurs propres avantages et inconvénients dans le développement. Cet article comparera les deux en profondeur, mettant en évidence leur architecture, leurs fonctionnalités et leurs différences de performances pour aider les développeurs à faire des choix éclairés en fonction de leurs besoins spécifiques de projet.

    Liste des fonctions de connexion de l'utilisateur LaravelListe des fonctions de connexion de l'utilisateur LaravelApr 18, 2025 pm 01:06 PM

    La création de capacités de connexion des utilisateurs à Laravel est une tâche cruciale et cet article fournira un aperçu complet couvrant toutes les étapes critiques de l'enregistrement des utilisateurs à la vérification de la connexion. Nous plongerons dans la puissance des capacités de vérification intégrées de Laravel et vous guiderons à travers la personnalisation et l'extension du processus de connexion en fonction des besoins spécifiques. En suivant ces instructions étape par étape, vous pouvez créer un système de connexion sécurisé et fiable qui offre une expérience d'accès transparente pour les utilisateurs de votre application Laravel.

    Quelles versions de Laravel y a-t-il? Comment choisir la version de Laravel pour les débutantsQuelles versions de Laravel y a-t-il? Comment choisir la version de Laravel pour les débutantsApr 18, 2025 pm 01:03 PM

    Dans le Guide de sélection de la version Laravel Framework pour les débutants, cet article plonge dans les différences de version de Laravel, conçues pour aider les débutants à faire des choix éclairés parmi de nombreuses versions. Nous nous concentrerons sur les principales caractéristiques de chaque version, comparerons leurs avantages et leurs inconvénients, et fournirons des conseils utiles pour aider les débutants à choisir la version la plus appropriée de Laravel en fonction de leur niveau de compétence et de leurs exigences de projet. Pour les débutants, le choix d'une version appropriée de Laravel est crucial car il peut avoir un impact significatif sur leur courbe d'apprentissage et leur expérience de développement globale.

    Comment afficher le numéro de version de Laravel? Comment afficher le numéro de version de LaravelComment afficher le numéro de version de Laravel? Comment afficher le numéro de version de LaravelApr 18, 2025 pm 01:00 PM

    Le Framework Laravel a des méthodes intégrées pour afficher facilement son numéro de version pour répondre aux différents besoins des développeurs. Cet article explorera ces méthodes, y compris l'utilisation de l'outil de ligne de commande Composer, l'accès à des fichiers .env ou l'obtention d'informations de version via le code PHP. Ces méthodes sont essentielles pour maintenir et gérer le versioning d'applications Laravel.

    La dernière méthode d'utilisation du framework PHP LaravelLa dernière méthode d'utilisation du framework PHP LaravelApr 18, 2025 pm 12:57 PM

    Laravel est un cadre d'applications Web basé sur PHP populaire qui est populaire parmi les développeurs pour sa syntaxe élégante et ses fonctionnalités puissantes. Sa dernière version introduit de nombreuses améliorations et nouvelles fonctionnalités conçues pour améliorer l'expérience de développement et les performances des applications. Cet article plongera dans la dernière approche de Laravel, en se concentrant sur la façon de tirer parti de ces mises à jour pour créer des applications Web plus puissantes et efficaces.

    Méthode d'installation de Laravel FrameworkMéthode d'installation de Laravel FrameworkApr 18, 2025 pm 12:54 PM

    Résumé de l'article: Cet article fournit des instructions détaillées étape par étape pour guider les lecteurs sur la façon d'installer facilement le cadre Laravel. Laravel est un puissant cadre PHP qui accélère le processus de développement des applications Web. Ce didacticiel couvre le processus d'installation des exigences du système à la configuration des bases de données et à la configuration du routage. En suivant ces étapes, les lecteurs peuvent jeter rapidement et efficacement une base solide pour leur projet Laravel.

    Comment apprendre Laravel comment apprendre Laravel gratuitementComment apprendre Laravel comment apprendre Laravel gratuitementApr 18, 2025 pm 12:51 PM

    Vous voulez apprendre le cadre de Laravel, mais ne souffrez pas de ressources ni de pression économique? Cet article vous fournit un apprentissage gratuit de Laravel, vous apprenant à utiliser des ressources telles que les plateformes en ligne, les documents et les forums communautaires pour jeter une base solide pour votre parcours de développement PHP de la mise en place de maîtrise.

    See all articles

    Outils d'IA chauds

    Undresser.AI Undress

    Undresser.AI Undress

    Application basée sur l'IA pour créer des photos de nu réalistes

    AI Clothes Remover

    AI Clothes Remover

    Outil d'IA en ligne pour supprimer les vêtements des photos.

    Undress AI Tool

    Undress AI Tool

    Images de déshabillage gratuites

    Clothoff.io

    Clothoff.io

    Dissolvant de vêtements AI

    AI Hentai Generator

    AI Hentai Generator

    Générez AI Hentai gratuitement.

    Article chaud

    R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
    1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Meilleurs paramètres graphiques
    1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
    Will R.E.P.O. Vous avez un jeu croisé?
    1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

    Outils chauds

    MinGW - GNU minimaliste pour Windows

    MinGW - GNU minimaliste pour Windows

    Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

    DVWA

    DVWA

    Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

    Listes Sec

    Listes Sec

    SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.

    SublimeText3 version Mac

    SublimeText3 version Mac

    Logiciel d'édition de code au niveau de Dieu (SublimeText3)

    Bloc-notes++7.3.1

    Bloc-notes++7.3.1

    Éditeur de code facile à utiliser et gratuit