又拍雲上傳

Jarvis42發表於2018-10-26

首先我使用 Google 搜尋 Laravel upyun php-sdk 這些關鍵詞
file
首先搜尋到的是 JellyBoolLaravel 擴充套件包,這個擴充套件包把又拍雲的 php-sdk 整合到 Laravel 專案會比較方便。

composer require "jellybool/flysystem-upyun"

安裝完成之後

config/app.php 裡新增 UpyunServiceProvider:

'providers' => [
    // Other service providers...
    JellyBool\Flysystem\Upyun\UpyunServiceProvider::class,
],

config/filesystems.phpdisks 中新增下面的配置:

return [
    //...
      'upyun' => [
                'driver'        => 'upyun', 
                'bucket'        => env('UPYUN_BUCKET',  '服務名稱')
                'operator'      => env('UPYUN_OPERATOR', '操作員的名字'),
                'password'      => env('UPYUN_PASSWORD', '操作員的密碼'),
                'domain'        => env('UPYUN_DOMAIN', '服務分配的域名'),
                'protocol'     => 'http', // 服務使用的協議,如需使用 http,在此配置 http
            ],
    //...
];

然後在 .env 檔案配置, 並且複製到 .env.example 檔案裡

UPYUN_BUCKET=
UPYUN_OPERATOR=
UPYUN_PASSWORD=
UPYUN_DOMAIN=

file

域名可繫結自己的線上專案域名,然後在 內容管理 裡面新增管理員和密碼(如果管理員和密碼不匹配就會報)

401 Unauthorized 錯誤

快速測試

如果你想快速測試自己的配置資訊是否正確又或者服務是否可行

resources/views/pages 下,新建檔案檢視 image.blade.php

@extends('layouts.app')
@section('title', '又拍雲圖片上傳測試')

@section('content')
    <div class="container">
        <h1 class="text-center">圖片上傳</h1>
        <div class="content">
            <form enctype="multipart/form-data" method="post" action="/image">
                {{ csrf_field() }}
                <div class="form-group">
                    <input type="file" name="image" value="選擇檔案">
                </div>
                <div class="form-group">
                    <input type="submit" class="form-control" value="上傳圖片">
                </div>
            </form>
        </div>
    </div>
@stop

然後在 routes/web.php 檔案裡新增以下程式碼:

<?php
use Illuminate\Http\Request;
.
.
.
// 圖片上傳測試
Route::get('/image', function () {
    return view('pages.image');
});

Route::post('/image', function (Request $request) {
    $domain = "http://" . config('filesystems.disks.upyun.domain');
    $file_path = Storage::disk('upyun')->put('/image', $request->file('image'));
    return $domain . "/$file_path";
});

完成之後訪問 http://專案名稱.test/image 連結,在檢視裡面測試圖片上傳,如果上傳成功會返回完整的連結。

複製連結,在新的視窗開啟。

如果圖片沒有顯示,可能要等 3 - 10 分鐘才神奇的顯示。

如果有誰知道是什麼原因,麻煩告訴我一下。

可在 Laravel 文件的 檔案儲存 中檢視更多的可用方法。

CNAME 可繫結你線上的二級域名: upload.線上域名 解析記錄衝突判斷規則

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章