dedmytro / laravel-cloudflare-images
Cloudflare API 客户端和文件系统用于 Laravel
Requires
- php: ^7.4|^8.0
- guzzlehttp/guzzle: ^6.2.1|^7.0
- illuminate/support: ^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: ^6.0|^9.0
- phpunit/phpunit: ^10.0
README
为 Laravel 项目提供访问 Cloudflare Images API 的权限
目录
安装
要获取 Laravel CloudflareImages 的最新版本,只需使用 Composer 依赖项目
$ composer require dedmytro/laravel-cloudflare-images
或者手动更新 require
块的 composer.json
并运行 composer update
。
{ "require": { "dedmytro/laravel-cloudflare-images": "^0.2" } }
配置
将环境变量添加到您的 .env 文件中
CLOUDFLARE_IMAGES_ACCOUNT='your-account-id' CLOUDFLARE_IMAGES_KEY='your-api-key' CLOUDFLARE_IMAGES_DELIVERY_URL='https://imagedelivery.net/ZWd9g1K8vvvVv_Yyyy_XXX' CLOUDFLARE_IMAGES_DEFAULT_VARIATION='your-default-variation' CLOUDFLARE_IMAGES_SIGNATURE_TOKEN='your-signature-token'
或者发布配置并设置变量
return [ 'account'=> env('CLOUDFLARE_IMAGES_ACCOUNT'), 'key'=> env('CLOUDFLARE_IMAGES_KEY'), 'delivery_url' => env('CLOUDFLARE_IMAGES_DELIVERY_URL'), 'default_variation' => env('CLOUDFLARE_IMAGES_DEFAULT_VARIATION'), 'signature_token' => env('CLOUDFLARE_IMAGES_SIGNATURE_TOKEN') ];
CLOUDFLARE_IMAGES_KEY
- 是一个 API 令牌
。要创建一个新的,请访问 Cloudflare 控制台的 用户 API 令牌
CLOUDFLARE_IMAGES_ACCOUNT
- 是概览页上的 账户 ID
CLOUDFLARE_IMAGES_DELIVERY_URL
- 是概览页上的 图片交付 URL
CLOUDFLARE_IMAGES_DEFAULT_VARIATION
- 是变体页上的一个变体
CLOUDFLARE_IMAGES_SIGNATURE_TOKEN
- 是来自图片 -> 密钥页的令牌
使用
直接上传
直接上传是 Cloudflare Images 的功能,可以从前端直接上传图片,但不需要共享您的 API 密钥。一旦您获得此 URL,您就可以将其用于 HTML 中
<form method="post" enctype="multipart/form-data" action="{{ $uploadUrl }}">
重要:您只能使用此 URL 一次!
use DeDmytro\CloudflareImages\Facades\CloudflareApi; $response = CloudflareApi::images()->directUploadUrl() $response->result->id; // Your uploaded image ID $response->result->uploadURL; // One-time uploadUrl
上传
调用 upload()
方法并传递文件作为本地文件路径或 UploadedFile
实例。上传的结果将获得 DetailsResponse
实例,其中包含上传图片的详细信息,因此您可以将其保存到本地。
use DeDmytro\CloudflareImages\Facades\CloudflareApi; use DeDmytro\CloudflareImages\Http\Responses\DetailsResponse; use DeDmytro\CloudflareImages\Http\Entities\Image; /* @var $file \Illuminate\Http\UploadedFile|string */ /* @var $response DetailsResponse*/ $response = CloudflareApi::images()->upload($file) /* @var $image Image*/ $image = $response->result $image->id; $image->filename; $image->variants->thumbnail; //Depends on your Cloudflare Images Variants setting $image->variants->original; //Depends on your Cloudflare Images Variants setting
列表
要列出现有图片,您应该使用 list()
方法,它还具有分页,并接受 $page
和 $perPage
参数。
use DeDmytro\CloudflareImages\Facades\CloudflareApi; /* @var $response ListResponse*/ $response = CloudflareApi::images()->list() //OR $response = CloudflareApi::images()->list($page, $perPage) foreach($response->result as $image){ $image->id; $image->filename; $image->variants->thumbnail; //Depends on your Cloudflare Images Variants setting $image->variants->original; //Depends on your Cloudflare Images Variants setting }
详细信息
要获取现有图片的详细信息,您应该使用 get($id)
方法,其中 $id
是在列出或上传图片时收到的图片标识符。
use DeDmytro\CloudflareImages\Facades\CloudflareApi; $response = CloudflareApi::images()->get($id) $image = $response->result; $image->id; $image->filename; $image->variants->thumbnail; //Depends on your Cloudflare Images Variants setting $image->variants->original; //Depends on your Cloudflare Images Variants setting
删除
要删除现有图片,您应该使用 delete($id)
方法,其中 $id
是在列出或上传图片时收到的图片标识符。
use DeDmytro\CloudflareImages\Facades\CloudflareApi; $response = CloudflareApi::images()->delete($id) $response->success
公开 URL
要生成本地图片 URL,请调用方法 url($id)
并传递图片 ID。不要忘记设置
CLOUDFLARE_IMAGES_DELIVERY_URL= CLOUDFLARE_IMAGES_DEFAULT_VARIATION=
use DeDmytro\CloudflareImages\Facades\CloudflareApi; $url = CloudflareApi::images()->url($id)
<img src="{{ $url }}"/>
签名 URL
要生成本地签名图片 URL,请调用方法 signedUrl($id, $expires = 3600)
并传递图片 ID 和以秒为单位的有效期。不要忘记设置
CLOUDFLARE_IMAGES_DELIVERY_URL= CLOUDFLARE_IMAGES_DEFAULT_VARIATION= CLOUDFLARE_IMAGES_SIGNATURE_TOKEN=
use DeDmytro\CloudflareImages\Facades\CloudflareApi; $url = CloudflareApi::images()->signedUrl($id, $expires)
<img src="{{ $url }}"/>