sisaacongoma/spaces-api

为DigitalOcean Spaces对象存储设计的API包装器,易于使用

v2 2020-09-28 12:01 UTC

This package is auto-updated.

Last update: 2024-09-05 14:30:00 UTC


README

Spaces-API

使使用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-API

安装Spaces-API有两种方法。您可以下载项目并将其直接放入代码文件夹,或者您可以使用Composer

 

a) 手动方法

  1. 下载Spaces-API 并将其放置在项目中。
  2. 从代码中加载它
require_once("spaces.php");

 

b) Composer方法

  1. 请确保您有Composer
  2. 安装Spaces-API
composer require sociallydev/spaces-api:v2
  1. 请确保您的代码有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-API

 

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();