首先我使用 Google 搜尋 Laravel upyun php-sdk
這些關鍵詞
首先搜尋到的是 JellyBool 的 Laravel 擴充套件包,這個擴充套件包把又拍雲的 php-sdk 整合到 Laravel 專案會比較方便。
composer require "jellybool/flysystem-upyun"
安裝完成之後
在 config/app.php
裡新增 UpyunServiceProvider
:
'providers' => [
// Other service providers...
JellyBool\Flysystem\Upyun\UpyunServiceProvider::class,
],
在 config/filesystems.php
的 disks
中新增下面的配置:
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=
域名可繫結自己的線上專案域名,然後在 內容管理
裡面新增管理員和密碼(如果管理員和密碼不匹配就會報)
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 協議》,轉載必須註明作者和本文連結