dptsi/laravel-storage

该软件包最新版本(v2.2.0)没有可用的许可证信息。

Laravel访问ITS文件存储API的辅助包

v2.2.0 2024-07-05 01:28 UTC

This package is auto-updated.

Last update: 2024-09-05 01:47:10 UTC


README

Laravel框架中访问ITS文件存储API的辅助包

要求

  1. PHP 7.4 或更高版本
  2. Laravel版本 8

安装

使用composer安装

composer require dptsi/laravel-storage

示例

上传

@method static mixed upload(\Illuminate\Http\File|\Illuminate\Http\UploadedFile $request)

使用表单(\Illuminate\Http\UploadedFile

use Dptsi\FileStorage\Facade\FileStorage;

FileStorage::upload($request->file('berkas'))

使用本地文件(\Illuminate\Http\File

use Dptsi\FileStorage\Facade\FileStorage;

FileStorage::upload(new File($path))

成功响应

{
    "file_ext": "",
    "file_id": "",
    "file_mimetype": "",
    "file_name": "",
    "file_size": ,
    "public_link": "",
    "tag": "",
    "timestamp": "",
},

删除

@method static mixed delete(string $file_id)

use Dptsi\FileStorage\Facade\FileStorage;

FileStorage::delete($dokumen->file_id)

成功响应

{
    "file_ext": "",
    "file_id": "",
    "file_mimetype": "",
    "file_name": "",
    "file_size": ,
    "public_link": "",
    "tag": "",
    "timestamp": "",
},

检查状态

成功

@method static string statusSuccess()

use Dptsi\FileStorage\Facade\FileStorage;

if($response->status == FileStorage::statusSuccess())

错误

@method static string statusError()

use Dptsi\FileStorage\Facade\FileStorage;

if($response->status == FileStorage::statusError())

AWS

确保您的aws配置在filestorage.php文件中存在

    'aws_key'                   => env('AWS_ACCESS_KEY_ID'),
    'aws_secret'                => env('AWS_SECRET_ACCESS_KEY'),
    'aws_region'                => env('AWS_DEFAULT_REGION'),
    'aws_bucket'                => env('AWS_BUCKET'),

上传到Aws

@method static mixed awsUpload(\Illuminate\Http\File|\Illuminate\Http\UploadedFile $request, string $subdirectory = null)

使用表单(\Illuminate\Http\UploadedFile) 使用可选参数子目录将文件上传到子目录而不是根目录。在AWS S3上使用上传文件的名称作为文件ID,而不是为该文件生成uuid,因此请确保文件名是唯一的。

use Dptsi\FileStorage\Facade\FileStorage;

FileStorage::awsUpload($request->file('berkas'), 'images')
//or
FileStorage::awsUpload($request->file('berkas'), 'assets/images')

从Aws S3创建临时公开链接

您可以使用临时公开uri

@method static mixed awsGetTemporaryPublicLink(string $aws_file_id, DateTime $datetime = null)

use Dptsi\FileStorage\Facade\FileStorage;

FileStorage::awsGetTemporaryPublicLink('fileid.pdf', Carbon::now->addMinutes(5))

使用文件ID字符串和可选的DateTime来指定url可以使用多长时间,默认情况下,url可以使用30分钟。

从Aws获取文件

您可以使用以下方法从aws S3存储获取文件

@method static mixed awsGetFileById(string $aws_file_id)

use Dptsi\FileStorage\Facade\FileStorage;

FileStorage::awsGetFileById('aws_file_id');

Google存储

确保您的google配置在filestorage.php文件中存在

    'gcs_key_path'              => env('GOOGLE_KEY_PATH'),
    'gcs_project_id'            => env('GOOGLE_PROJECT_ID'),
    'gcs_bucket'                => env('GOOGLE_BUCKET'),

上传到Google存储

@method static mixed gcsUpload(\Illuminate\Http\File|\Illuminate\Http\UploadedFile $data, string $subdirectory = null, string $bucketname = null, string $projectId = null) 使用表单(\Illuminate\Http\UploadedFile | \Illuminate\Http\File) 使用可选参数子目录将文件上传到子目录而不是根目录。在Google存储上使用上传文件的名称作为文件ID,而不是为该文件生成uuid,因此请确保文件名是唯一的。

use Dptsi\FileStorage\Facade\FileStorage;

FileStorage::gcsUpload($request->file('berkas'), 'images')
//or
FileStorage::gcsUpload($request->file('berkas'), 'assets/images')

从Google存储删除

@method static mixed gcsDelete(string $gcs_file_id, string $bucketname = null, string $projectId = null)

use Dptsi\FileStorage\Facade\FileStorage;

FileStorage::gcsDelete('gcs_file_id')

通过ID从Google存储获取文件

@method static mixed gcsGetFileById(string $gcs_file_id, string $bucketname = null, string $projectId = null) 返回对象的base64字符串数据和元数据

use Dptsi\FileStorage\Facade\FileStorage;

FileStorage::gcsGetFileById('gcs_file_id')

将文件下载到本地存储

@method static mixed gcsDownloadFile(string $gcs_file_id, string $savepath, string $bucketname = null, string $projectId = null) 文件下载到系统目录

use Dptsi\FileStorage\Facade\FileStorage;

FileStorage::gcsDownloadFile('gcs_file_id', storage_path('temp/image.png'))

获取文件作为二进制字符串

@method static mixed gcsGetFileByIdAsString(string $gcs_file_id, string $bucketname = null, string $projectId = null) 返回对象

{# ▼
  +"status": "OK"
  +"string_data": bynary_string_data
}

示例

use Dptsi\FileStorage\Facade\FileStorage;

FileStorage::gcsGetFileByIdAsString('gcs_file_id')

获取文件作为二进制流

@method static mixed gcsGetFileByIdAsStream(string $gcs_file_id, string $bucketname = null, string $projectId = null) 返回对象

{# ▼
  +"status": "OK"
  +"stream_data": GuzzleHttp\Psr7\Stream
}

示例

use Dptsi\FileStorage\Facade\FileStorage;

FileStorage::gcsGetFileByIdAsStream('gcs_file_id')

从Google存储创建临时公开链接

您可以使用临时公开uri

@method static mixed gcsGetTemporaryPublicLink(string $gcs_file_id, DateTime $datetime = null, string $bucketname = null, string $projectId = null) 返回对象

{# ▼
  +"status": "OK"
  +"expired_at": "xxxxxxxxxxxxx"
  +"url": "xxxxxxxxxxxxx"
}