English | 简体中文

Aliyun OSS Laravel

This package is a wrapper bridging aliyun-oss-flysystem into Laravel as an available storage disk.
If client direct transmission is required, Use web server signature direct transmission OSS extension package aliyun-oss-appserver.

Compatibility

laravel aliyun-oss-laravel driver readme
>=5.5,<9.0 ^3.0 aliyun readme
>=9.0 ^4.0 oss readme

Installation

If you use the composer to manage project dependencies, run the following command in your project"s root directory:

composer require alphasnow/aliyun-oss-laravel

Then run composer install to install the dependency.

Modify the environment file .env

OSS_ACCESS_KEY_ID=<Your aliyun accessKeyId, Required> OSS_ACCESS_KEY_SECRET=<Your aliyun accessKeySecret, Required> OSS_BUCKET=<Your oss bucket name, Required> OSS_ENDPOINT=<Your oss endpoint domain, Required>

(Optional) Modify the configuration file config/filesystems.php

"default" => env("FILESYSTEM_DRIVER", "oss"), // ... "disks"=>[ // ... "oss" => [ "driver" => "oss", "access_key_id" => env("OSS_ACCESS_KEY_ID"), // Required, YourAccessKeyId "access_key_secret" => env("OSS_ACCESS_KEY_SECRET"), // Required, YourAccessKeySecret "bucket" => env("OSS_BUCKET"), // Required, For example: my-bucket "endpoint" => env("OSS_ENDPOINT"), // Required, For example: oss-cn-shanghai.aliyuncs.com "internal" => env("OSS_INTERNAL", null), // Optional, For example: oss-cn-shanghai-internal.aliyuncs.com "domain" => env("OSS_DOMAIN", null), // Optional, For example: oss.my-domain.com "is_cname" => env("OSS_CNAME", false), // Optional, if the Endpoint is a custom domain name, this must be true, see: https://github.com/aliyun/aliyun-oss-php-sdk/blob/572d0f8e099e8630ae7139ed3fdedb926c7a760f/src/OSS/OssClient.php#L113C1-L122C78 "prefix" => env("OSS_PREFIX", ""), // Optional, The prefix of the store path "use_ssl" => env("OSS_SSL", false), // Optional, Whether to use HTTPS "reverse_proxy" => env("OSS_REVERSE_PROXY", false), // Optional, Whether to use the Reverse proxy, such as nginx "throw" => env("OSS_THROW", false), // Optional, Whether to throw an exception that causes an error "options" => [], // Optional, Add global configuration parameters, For example: [OSSOssClient::OSS_CHECK_MD5 => false] "macros" => [] // Optional, Add custom Macro, For example: [AppMacrosListBuckets::class, AppMacrosCreateBucket::class] ], // ... ]

Usage

use IlluminateSupportFacadesStorage; $storage = Storage::disk("oss");

Write

Storage::disk("oss")->putFile("dir/path", "/local/path/file.txt"); Storage::disk("oss")->putFileAs("dir/path", "/local/path/file.txt", "file.txt"); Storage::disk("oss")->put("dir/path/file.txt", file_get_contents("/local/path/file.txt")); $fp = fopen("/local/path/file.txt","r"); Storage::disk("oss")->put("dir/path/file.txt", $fp); fclose($fp); Storage::disk("oss")->prepend("dir/path/file.txt", "Prepend Text"); Storage::disk("oss")->append("dir/path/file.txt", "Append Text"); Storage::disk("oss")->put("dir/path/secret.txt", "My secret", "private"); Storage::disk("oss")->put("dir/path/download.txt", "Download content", ["headers" => ["Content-Disposition" => "attachment;filename=download.txt"]]);

Read

Storage::disk("oss")->url("dir/path/file.txt"); Storage::disk("oss")->temporaryUrl("dir/path/file.txt", CarbonCarbon::now()->addMinutes(30)); Storage::disk("oss")->get("dir/path/file.txt"); Storage::disk("oss")->exists("dir/path/file.txt"); Storage::disk("oss")->size("dir/path/file.txt"); Storage::disk("oss")->lastModified("dir/path/file.txt");

Delete

Storage::disk("oss")->delete("dir/path/file.txt"); Storage::disk("oss")->delete(["dir/path/file1.txt", "dir/path/file2.txt"]);

File operation

Storage::disk("oss")->copy("dir/path/file.txt", "dir/path/file_new.txt"); Storage::disk("oss")->move("dir/path/file.txt", "dir/path/file_new.txt"); Storage::disk("oss")->rename("dir/path/file.txt", "dir/path/file_new.txt");

Folder operation

Storage::disk("oss")->makeDirectory("dir/path"); Storage::disk("oss")->deleteDirectory("dir/path"); Storage::disk("oss")->files("dir/path"); Storage::disk("oss")->allFiles("dir/path"); Storage::disk("oss")->directories("dir/path"); Storage::disk("oss")->allDirectories("dir/path");

Use Macro

Storage::disk("oss")->appendObject("dir/path/news.txt", "The first line paragraph.", 0); Storage::disk("oss")->appendObject("dir/path/news.txt", "The second line paragraph.", 25); Storage::disk("oss")->appendObject("dir/path/news.txt", "The last line paragraph.", 51); Storage::disk("oss")->appendFile("dir/path/file.zip", "dir/path/file.zip.001", 0); Storage::disk("oss")->appendFile("dir/path/file.zip", "dir/path/file.zip.002", 1024); Storage::disk("oss")->appendFile("dir/path/file.zip", "dir/path/file.zip.003", 1024);

Add Custom Macro

Add Macro

namespace AppMacros; use AlphaSnowLaravelFilesystemAliyunMacrosAliyunMacro; class ListBuckets implements AliyunMacro { // ... }

Reference code: AppendObject.php

Modify the config

[ "macros" => [AppMacrosListBuckets::class] ]

Use Macro

Storage::disk("oss")->listBuckets()

Use OssClient

use AlphaSnowLaravelFilesystemAliyunOssClientAdapter; $adapter = new OssClientAdapter(Storage::disk("oss")); $adapter->client()->appendObject($adapter->bucket(), $adapter->path("dir/path/file.txt"), "contents", 0, $adapter->options(["visibility" => "private"]));

Documentation

AlibabaCloud Object Storage Service Documentation

Issues

Opening an Issue

Contributors

Star History

License

MIT

版权声明:

1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。
2、网站不提供资料下载,如需下载请到原作者页面进行下载。
3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考学习用!
4、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。