dptsi / laravel-storage
Laravel访问ITS文件存储API的辅助包
Requires
- php: ^8.0.2
- ext-json: *
- aws/aws-sdk-php: ^3.20.0
- google/cloud-storage: ^1.42
- guzzlehttp/guzzle: ^7.8
- laravel/framework: ^9.21|^10.0|^11.0
README
Laravel框架中访问ITS文件存储API的辅助包
要求
- PHP 7.4 或更高版本
- 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" }