찾다
PHP 프레임워크LaravelLaravel이 GitHub를 통합하여 파일을 저장하는 방법에 대해 이야기해 보세요.

튜토리얼 칼럼에서는 Laravel이 github을 통합하여 파일을 저장하는 방법을 소개합니다. 이것이 모든 사람에게 도움이 되기를 바랍니다.

GitHub API 소개

인터페이스 문서: docs.github.com/en/rest파일 콘텐츠 인터페이스를 생성하거나 업데이트하기만 하면 되는 매우 강력한 GitHub API를 사용해야 합니다.

파일 콘텐츠 생성 또는 업데이트

요청 주소: api.github.com/repos/{owner}/{repo}/contents/{path}

  • 요청 방법: 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 对象的属性

    Parameters🎜owner🎜🎜string🎜🎜path🎜🎜username🎜🎜🎜repo🎜🎜 string🎜🎜path🎜🎜창고 이름🎜🎜🎜경로🎜🎜string🎜🎜path🎜🎜파일 저장 경로🎜🎜🎜메시지 🎜🎜string 🎜🎜body🎜🎜🎜Required🎜 - 커밋 메시지🎜🎜🎜content🎜🎜string🎜🎜body🎜🎜🎜Required🎜 - 🎜Base64를 사용하여 인코딩된 새 파일 콘텐츠 🎜🎜 🎜🎜sha🎜🎜string🎜🎜body🎜🎜🎜파일을 업데이트하려는 경우 필수🎜 - 대체된 파일의 blob SHA🎜🎜🎜branch code>🎜🎜string🎜🎜body🎜🎜분기 이름 - 저장소의 기본 분기는 일반적으로 <code>master🎜🎜🎜committer🎜🎜object🎜🎜입니다. body🎜🎜 제출자 - 기본값은 인증된 사용자입니다. 🎜🎜🎜author🎜🎜object🎜🎜body🎜🎜파일 작성자 - 기본값은 committer입니다. , committer인 경우 object🎜
    名称 描述
    name (string) 必填 - 提交的作者或提交者的名字。如果省略 name 会收到 422 状态代码
    email (string) 必填 - 提交的作者或提交者的电子邮件。如果省略 email 会收到 422 状态代码
    date
    accept
    이름 유형 위치 설명
    string🎜🎜header🎜🎜로 설정하는 것이 좋습니다 >application/vnd .github.v3+json🎜🎜
    의 인증된 사용자🎜🎜🎜🎜🎜committer 속성입니다. 🎜🎜이름 (문자열)🎜🎜🎜필수🎜 - 작성자의 이름 또는 제출물 제출자. 이름이 생략되면 422 상태 코드 🎜🎜🎜이메일(문자열)🎜🎜🎜required🎜을 받게 됩니다. 제출 작성자 또는 제출자의 이메일. email을 생략하면 422 상태 코드 🎜🎜🎜date(문자열)🎜🎜🎜🎜🎜🎜🎜을 받게 됩니다. 🎜author 개체의 속성🎜
    이름 설명
    🎜🎜name (string)🎜🎜🎜필수🎜 - 제출물의 작성자 또는 제출자의 이름입니다. 이름이 생략되면 422 상태 코드 🎜🎜🎜이메일(문자열)🎜🎜🎜required🎜을 받게 됩니다. 제출 작성자 또는 제출자의 이메일. email을 생략하면 422 상태 코드 🎜🎜🎜date(문자열)🎜🎜🎜🎜🎜🎜🎜을 받게 됩니다.

    인증

    공식적으로 세 가지 방법을 제공합니다:

    • 기본 인증 - 사용자 이름 및 비밀번호

    • OAuth2 토큰 - 토큰

    • OAuth2 키/비밀 - client_id 및 client_secret(쿼리만 지원)

    두 번째 방법을 사용하는 것이 좋습니다.

    토큰 설정

    설정 > 개발자 설정 > 개인 액세스 토큰 > 새 토큰 생성

    Laravel이 GitHub를 통합하여 파일을 저장하는 방법에 대해 이야기해 보세요.

    생성된 토큰은 저장되고 한 번만 표시되어야 합니다.

    웨어 하우스 만들기

    jsDelivr CDN을 사용하여 가속화할 수 있도록 웨어하우스를 공개로 설정하세요.

    GitHub 창고를 이미지베드로 사용하는데 문제는 중국에서 GitHub 접속이 매우 느리다는 것입니다. jsDelivr CDN을 사용하면 접속 속도를 높일 수 있습니다. jsDelivr은 무료 오픈소스 CDN 솔루션으로, 중국 본토와 해외를 연결하는 최초의 무료 CDN 서비스입니다. 중국 정부가 발급한 ICP 라이센스가 있으므로 만리방화벽(Great Firewall) 사용에 대해 걱정할 필요가 없습니다. 중국의. jsDelivr을 사용하여 액세스 속도를 높이려면 사용자 정의 도메인 이름을 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

    Laravel code에는 여러 구성 매개변수를 설정해야 하며, .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
            ]
        ]);}
    그런 다음 config 아래에 구성 파일을 생성하고 github-file.php 구성 파일을 생성했습니다.

    rrreee
    Trait 생성 재사용 업로드 기능

    rrreee필요한 경우 UploadToGithub 사용rrreee

    🎜🎜🎜최신 5개 Laravel 비디오 튜토리얼🎜🎜🎜(권장) 🎜🎜🎜🎜🎜
    이름 설명

    위 내용은 Laravel이 GitHub를 통합하여 파일을 저장하는 방법에 대해 이야기해 보세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명
    이 기사는 learnku에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
    Laravel (PHP) vs. Python : 다른 사용 사례 및 응용 프로그램Laravel (PHP) vs. Python : 다른 사용 사례 및 응용 프로그램Apr 18, 2025 am 12:16 AM

    Laravel 또는 Python을 선택하는 것은 프로젝트 요구 사항에 따라 다릅니다. 1) 웹 응용 프로그램을 신속하게 개발하고 ORM 및 인증 시스템을 사용해야하는 경우 Laravel을 선택하십시오. 2) 데이터 분석, 기계 학습 또는 과학 컴퓨팅이 포함되면 Python을 선택하십시오.

    Laravel 및 Python : 올바른 도구 찾기Laravel 및 Python : 올바른 도구 찾기Apr 18, 2025 am 12:14 AM

    Laravel은 웹 응용 프로그램을 빠르게 구축하는 데 적합하며 Python은 유연성과 다양성이 필요한 프로젝트에 적합합니다. 1) Laravel은 PHP 생태계에 적합한 ORM 및 라우팅과 같은 풍부한 기능을 제공합니다. 2) Python은 간결한 구문과 강력한 라이브러리 생태계로 유명하며 웹 개발 및 데이터 과학과 같은 분야에 적합합니다.

    Laravel 및 PHP : 동적 웹 사이트 만들기Laravel 및 PHP : 동적 웹 사이트 만들기Apr 18, 2025 am 12:12 AM

    Laravel과 PHP를 사용하여 동적 웹 사이트를 효율적이고 재미있게 만듭니다. 1) Laravel은 MVC 아키텍처를 따르고 블레이드 템플릿 엔진은 HTML 쓰기를 단순화합니다. 2) 라우팅 시스템 및 요청 처리 메커니즘은 URL 정의 및 사용자 입력 처리를 간단하게 만듭니다. 3) Eloquentorm은 데이터베이스 작업을 단순화합니다. 4) 데이터베이스 마이그레이션, CRUD 작업 및 블레이드 템플릿 사용은 블로그 시스템 예를 통해 입증됩니다. 5) Laravel은 강력한 사용자 인증 및 승인 기능을 제공합니다. 6) 디버깅 기술에는 로깅 시스템 및 장인 도구 사용이 포함됩니다. 7) 성능 최적화 제안에는 게으른 하중 및 캐싱이 포함됩니다.

    Laravel과 Full Stack : 앞뒤로 함께Laravel과 Full Stack : 앞뒤로 함께Apr 18, 2025 am 12:07 AM

    Laravel은 Blade Template Engine, Eloquentorm, Artisan Tools 및 Laravelmix를 통해 풀 스택 개발을 실현합니다. 1. Blade는 프론트 엔드 개발을 단순화합니다. 2. 웅변적인 데이터베이스 작업을 단순화합니다. 3. 장인은 개발 효율성을 향상시킨다. 4. Laravelmix는 프론트 엔드 리소스를 관리합니다.

    Laravel : 현대 웹 개발을위한 프레임 워크Laravel : 현대 웹 개발을위한 프레임 워크Apr 18, 2025 am 12:05 AM

    Laravel은 MVC 아키텍처 모델을 따르고 풍부한 도구와 기능을 제공하며 웹 개발 프로세스를 단순화하는 최신 PHP 기반 프레임 워크입니다. 1) 데이터베이스 상호 작용에 대한 eloquentorm, 2) 빠른 코드 생성을위한 Artisan Command Line 인터페이스, 3) 효율적인보기 개발을위한 블레이드 템플릿 엔진, 4) URL 구조를 정의하기위한 강력한 라우팅 시스템, 5) 사용자 관리를위한 인증 시스템, 6) 실시간 기능을위한 이벤트 청취 및 방송, 성능 최적화를위한 이벤트 청취 및 방송을보다 쉽고 효율적으로 만들어 내고 있습니다.

    Laravel (PHP) vs. Python : 장단점의 무게Laravel (PHP) vs. Python : 장단점의 무게Apr 17, 2025 am 12:18 AM

    Laravel은 웹 응용 프로그램을 빠르게 구축하는 데 적합하지만 Python은 광범위한 응용 프로그램 시나리오에 적합합니다. 1. Laravel은 웹 개발을 단순화하기 위해 Eloquentorm, Blade Template Engine 및 Artisan 도구를 제공합니다. 2. Python은 동적 유형, 풍부한 표준 라이브러리 및 타사 생태계로 유명하며 웹 개발, 데이터 과학 및 기타 분야에 적합합니다.

    Laravel vs. Python : 프레임 워크 및 라이브러리 비교Laravel vs. Python : 프레임 워크 및 라이브러리 비교Apr 17, 2025 am 12:16 AM

    Laravel과 Python은 각각 고유 한 장점을 가지고 있습니다. Laravel은 기능이 풍부한 웹 애플리케이션을 빠르게 구축하는 데 적합하며 Python은 데이터 과학 및 일반 프로그래밍 분야에서 잘 작동합니다. 1. Laravel은 현대적인 웹 애플리케이션을 구축하는 데 적합한 Eloquentorm 및 Blade Template 엔진을 제공합니다. 2. Python에는 풍부한 표준 라이브러리와 타사 라이브러리가 있으며 Django 및 Flask 프레임 워크는 다양한 개발 요구를 충족시킵니다.

    Laravel의 목적 : 강력하고 우아한 웹 응용 프로그램 구축Laravel의 목적 : 강력하고 우아한 웹 응용 프로그램 구축Apr 17, 2025 am 12:13 AM

    Laravel은 코드 구조를 명확하게하고 개발 프로세스를보다 예술적으로 만들 수 있기 때문에 선택할 가치가 있습니다. 1) Laravel은 PHP를 기반으로하며 MVC 아키텍처를 따르며 웹 개발을 단순화합니다. 2) eloquentorm, 장인 도구 및 블레이드 템플릿과 같은 핵심 기능은 개발의 우아함과 견고성을 향상시킵니다. 3) 라우팅, 컨트롤러, 모델 및 뷰를 통해 개발자는 응용 프로그램을 효율적으로 구축 할 수 있습니다. 4) 큐 및 이벤트 모니터링과 같은 고급 기능은 응용 프로그램 성능을 더욱 향상시킵니다.

    See all articles

    핫 AI 도구

    Undresser.AI Undress

    Undresser.AI Undress

    사실적인 누드 사진을 만들기 위한 AI 기반 앱

    AI Clothes Remover

    AI Clothes Remover

    사진에서 옷을 제거하는 온라인 AI 도구입니다.

    Undress AI Tool

    Undress AI Tool

    무료로 이미지를 벗다

    Clothoff.io

    Clothoff.io

    AI 옷 제거제

    AI Hentai Generator

    AI Hentai Generator

    AI Hentai를 무료로 생성하십시오.

    뜨거운 도구

    VSCode Windows 64비트 다운로드

    VSCode Windows 64비트 다운로드

    Microsoft에서 출시한 강력한 무료 IDE 편집기

    맨티스BT

    맨티스BT

    Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

    ZendStudio 13.5.1 맥

    ZendStudio 13.5.1 맥

    강력한 PHP 통합 개발 환경

    Dreamweaver Mac版

    Dreamweaver Mac版

    시각적 웹 개발 도구

    MinGW - Windows용 미니멀리스트 GNU

    MinGW - Windows용 미니멀리스트 GNU

    이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.