dedmytro/laravel-cloudflare-images

Cloudflare API 客户端和文件系统用于 Laravel

资助包维护!

0.2.1 2024-03-30 07:50 UTC

This package is auto-updated.

Last update: 2024-08-30 08:45:07 UTC


README

为 Laravel 项目提供访问 Cloudflare Images API 的权限

Stable Version Unstable Version Total Downloads License

目录

安装

要获取 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 }}"/>