sisaacongoma / spaces-api
为DigitalOcean Spaces对象存储设计的API包装器,易于使用
v2
2020-09-28 12:01 UTC
Requires
- php: >=5.4.0
- aws/aws-sdk-php: ^3.52
- guzzlehttp/guzzle: ^6.3
- mtdowling/jmespath.php: ^2.4
- psr/http-message: ^1.0
This package is auto-updated.
Last update: 2024-09-05 14:30:00 UTC
README
使使用DigitalOcean的Spaces对象存储变得非常简单。
- 使一切变得非常简单。
- 自动处理大型文件的分片和流上传。
- 使用Spaces术语代替S3的对象。
示例
创建一个空间并上传,就这么简单。
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Upload some text. $my_space->upload("Super cool content", "example.txt"); //Uploaded!
tl;dr
-
文件
-
Spaces
安装Spaces-API
安装Spaces-API有两种方法。您可以下载项目并将其直接放入代码文件夹,或者您可以使用Composer。
a) 手动方法
- 下载Spaces-API 并将其放置在项目中。
- 从代码中加载它
require_once("spaces.php");
b) Composer方法
- 请确保您有Composer。
- 安装Spaces-API
composer require sociallydev/spaces-api:v2
- 请确保您的代码有Composer自动加载器
require_once("vendor/autoload.php");
设置
您需要DigitalOcean账户和API密钥来使用Spaces-API。您应该可以从DigitalOcean仪表板生成密钥对。在API页面中,应该有一个标题为“Spaces访问密钥”的部分。点击“生成新密钥”并按照步骤操作。这将为您提供访问密钥和秘密密钥。
我们将使用这些密钥来启动Spaces实例
$spaces = Spaces("ACCESS KEY", "SECRET KEY");
使用
一旦您有一个Spaces实例,您几乎可以执行Spaces API允许的任何事情。
以下是一个将所有文件下载到本地目录的示例
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Download entire Space to a directory. $my_space->downloadToDirectory("local_backup");
Spaces顶级功能
这些都是Spaces实例可以执行的所有功能。
创建新空间
$spaces = Spaces("ACCESS KEY", "SECRET KEY"); //Creates a new Space. $spaces->create("my-new-space", "nyc3", "private");
- 第三个(空间隐私)参数是可选的。默认为私有。
- 返回一个新的单个空间实例。与
$spaces->space("my-new-space")相同。
使用现有空间
$spaces = Spaces("ACCESS KEY", "SECRET KEY"); //Get an existing Space. $my_space = $spaces->space("my-space", "nyc3");
列出所有空间
$spaces = Spaces("ACCESS KEY", "SECRET KEY"); //Returns an array of all available Spaces. $spaces->listSpaces();
单个空间功能
这些都是空间实例(从 $spaces->space("my-new-space"))可以执行的所有功能!
上传存储的文件
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Upload a local stored file. $my_space->uploadFile("path/to/my/file.txt", "path/on/space.txt", "private");
- 第二个(另存为)参数是可选的。Spaces-API如果未提供另存为路径,则尝试使用原始文件路径作为Spaces上的路径。
- 第三个参数(文件隐私)是可选的。默认为私有。
- 返回有关文件的信息。
直接上传文本
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Upload a local stored file. $my_space->upload("my content", "path/on/space.txt", "private");
- 第一个参数(内容)可以是字符串,也可以是StreamInterface或PHP流资源。
- 第三个参数(文件隐私)是可选的。默认为私有。
- 返回有关文件的信息。
上传本地文件夹
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Uploads an entire local directory. $my_space->uploadDirectory("my-local-folder");
- 您可以提供一个第二个参数,该参数可以是Spaces中的文件夹,用于上传本地文件夹中的所有文件。
下载文件
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Returns the file content as result. $content = $my_space->downloadFile("my-file.txt"); //Saves the file content to the local path, and returns file info. $info = $my_space->downloadFile("my-file.txt", "save-path/file.txt");
将您的空间下载到本地文件夹
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Uploads an entire local directory. $my_space->downloadToDirectory("my-local-folder");
- 您可以为第二个参数提供一个文件夹,该文件夹位于您的空间中。Spaces-API只会下载此文件夹内的文件。
复制您空间内的文件
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Copies the file to the same Space. $my_space->copyFile("my-file.txt", "my-new-file.txt"); //Copies the file to another Space. $my_space->copyFile("my-file.txt", "my-new-file.txt", "my-other-space");
- DigitalOcean仅允许在同一区域内的Spaces之间复制。
- 您可以为第四个参数提供一个值来设置新文件的隐私(公开/私有)。
- 返回新文件的信息。
列出您空间内所有的文件
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Lists all files inside your Space. $my_space->listFiles(); //Lists all files in a folder inside your Space. $my_space->listFiles("my-folder");
- 此函数会自动迭代直到获取所有文件,但您可以将第二个参数设置为false,如果您想自己处理分页。
- 如果将第二个参数设置为false,您可以将第三个参数设置为ContinuationToken。
- 返回一个文件数组,但如果第二个参数设置为false,则返回原始对象。
检查文件是否存在
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Returns true if this file exists, otherwise false. $my_space->fileExists("my-file.txt");
获取文件信息
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Returns all available data on a file. $my_space->fileInfo("my-file.txt");
创建一个签名URL(用于共享私有文件)
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Returns a URL that'll work for 15 minutes for this file. $my_space->signedURL("my-file.txt", "15 minutes");
创建一个未签名URL(用于共享公共文件)
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Returns a URL that'll work as long as the file is public. $my_space->url("my-file.txt");
更改文件的隐私(公开和私有ACL)
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Make a file public. $my_space->filePrivacy("my-file.txt", "public"); //Make a file private. $my_space->filePrivacy("my-file.txt", "private");
删除文件
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Deletes a single file. $my_space->deleteFile("my-file.txt");
删除整个文件夹
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Deletes all content of a folder (Or any file paths that match the provided check string). $my_space->deleteFolder("my-folder");
更改您空间的隐私(ACL)
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Makes your Space public. All your Space's files will be displayed to anyone. $my_space->privacy("public"); //Makes your Space private. $my_space->privacy("private");
列出空间的CORS规则
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Returns an array of your Space's CORS rules. $my_space->getCORS();
- 如果不存在CORS规则,这将抛出一个错误。
设置您空间的CORS规则
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //This allows all sources to use your file. $my_space->setCORS([["origins" => ["*"], "methods" => ["GET", "HEAD", "OPTIONS"]]]);
销毁空间
同时也会删除您空间内的所有文件
$my_space = Spaces("ACCESS KEY", "SECRET KEY")->space("my_space", "nyc3"); //Destroys your Space & deletes all its files. $my_space->destroy();