As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Operações de diretório
O S3 Transfer Manager pode lidar com transferências de diretórios inteiros.
Diretório de upload
O S3 Transfer Manager pode carregar um diretório inteiro em um bucket do S3. <Are the key values the filenames when
uploaded?>
<?php use Aws\S3\S3Transfer\Models\UploadDirectoryRequest; use Aws\S3\S3Transfer\S3TransferManager; require __DIR__ . '/../vendor/autoload.php'; $transferManager = new S3TransferManager(null, [ 'default_region' => 'us-west-2' ]); $uploadDirPromise = $transferManager->uploadDirectory( new UploadDirectoryRequest( '/path/to/local/directory', 'amzn-s3-demo-bucket', [ // Additional `putObject` parameters that apply to all files. 'ACL' => 'public-read', 'CacheControl' => 'max-age=3600', ], [ // Configuration options. 'recursive' => true, 'follow_symbolic_links' => false, 's3_prefix' => 'uploads/2023/', 's3_delimiter' => '/', 'track_progress' => true, 'filter' => function ($file) { // Upload only .jpg files. return pathinfo($file, PATHINFO_EXTENSION) === 'jpg'; }, 'upload_object_request_modifier' => function ($args) { // Customize request arguments for each file. $args['ContentType'] = 'image/jpeg'; }, ] ) ); // Wait for the upload process to complete. $result = $uploadDirPromise->wait(); $uploaded = $result->getObjectsUploaded(); $failed = $result->getObjectsFailed(); echo "Uploaded {$uploaded} files. Failed: {$failed}\n";
Parâmetros do método uploadDirectory
O uploadDirectory método aceita uma instância de UploadDirectoryRequest <add link> como argumento.
Parâmetros do UploadDirectoryRequest
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
|
|
string |
Sim |
Caminho do diretório local a ser carregado. |
|
|
string |
Sim |
Nome do bucket S3 de destino. |
|
|
array |
Não |
Parâmetros adicionais de solicitação de objeto de upload para todos os arquivos. |
|
|
array |
Não |
Opções de configuração para o upload do diretório. Para obter mais informações sobre as opções de configuração, consulte a seção a seguir. |
|
|
array |
Não |
Matriz de objetos |
|
|
bool |
-1 “Tempo de execução padrão” |
Para indicar a profundidade máxima do arquivo recursivo, três passos. |
|
|
|
Não |
Um rastreador de progresso para todos os envios. |
| Opção | Tipo | Padrão | Description |
|---|---|---|---|
|
|
bool |
|
Se os subdiretórios devem ser carregados recursivamente. |
|
|
bool |
|
Se deve seguir links simbólicos. |
|
|
string |
'' |
Prefixo a ser adicionado a todas as chaves do objeto. |
|
|
string |
'/' |
O delimitador a ser usado nas chaves de objeto do S3. |
track_progress |
bool | false |
Se deve acompanhar o progresso. |
|
|
int | 100 | O número máximo de carregamentos simultâneos. |
|
|
chamável |
nulo |
Função para filtrar quais arquivos enviar. |
|
|
chamável |
nulo |
Função para personalizar cada solicitação de upload. |
|
|
chamável |
nulo |
Função para lidar com falhas de upload. |
Tipos de opções que podem ser solicitadas $config
| Nome da opção | nome do parâmetro | tipo de parâmetro | informações do parâmetro |
|---|---|---|---|
filter |
$file |
SplFileInfo|sequência |
Se convertido em string, é o caminho do arquivo. Caso contrário, é uma instância de |
upload_object_request_modifier |
$requestArgs |
array | Os argumentos da solicitação para cada solicitação de upload individual. Para obter mais informações sobre as opções de matriz, consulte a seção de sintaxe do parâmetro do método putObject. |
failure_policy |
$uploadRequestArgs |
array | Os argumentos da solicitação para cada solicitação de upload individual. Para obter mais informações sobre opções de matriz, consulte a seção de sintaxe de parâmetros do método putObject para opções de matriz. |
$uploadDirectoryArgs |
array | Uma matriz com o diretório de origem e o bucket de destino para a operação do diretório de upload. | |
$reason |
Throwable|sequência |
O detentor da exceção que contém informações sobre o que causou a falha. |
|
$uploadDirectoryResult |
UploadDirectoryResult |
O objeto que contém o número de objetos carregados com sucesso e o número que falharam. |
Quando o uploadDirectory método é executado com sucesso, ele retorna um UploadDirectoryResult<add link>.
Diretório de downloads
Você pode baixar um diretório de um bucket do S3. <Are the filenames
the key values when downloaded? If there is no extension in the key, is there
also no extension on the file?>
<?php use Aws\S3\S3Transfer\Models\DownloadDirectoryRequest; use Aws\S3\S3Transfer\S3TransferManager; require __DIR__ . '/../vendor/autoload.php'; $transferManager = new S3TransferManager(null, [ 'default_region' => 'us-west-2' ]); $downloadDirPromise = $transferManager->downloadDirectory( new DownloadDirectoryRequest( 'amzn-s3-demo-bucket', '/path/to/local/directory', [ // Additional `getObject` parameters that apply to all files. ], [ // Configuration options. 's3_prefix' => 'uploads/2023/', 's3_delimiter' => '/', 'track_progress' => true, 'filter' => function ($key) { // Download only .jpg files. return pathinfo($key, PATHINFO_EXTENSION) === 'jpg'; }, 'download_object_request_modifier' => function ($args) { // Customize request arguments for each file. $args['ResponseContentType'] = 'image/jpeg'; }, 'list_objects_v2_args' => [ 'MaxKeys' => 1000, 'Prefix' => 'uploads/2023/', ], 'fails_when_destination_exists' => true, ] ) ); // Wait for the download process to complete. $result = $downloadDirPromise->wait(); $downloaded = $result->getObjectsDownloaded(); $failed = $result->getObjectsFailed(); echo "Downloaded {$downloaded} files. Failed: {$failed}\n";
Parâmetros do método downloadDirectory
O downloadDirectory método aceita uma instância de DownloadDirectoryRequest <add
link> como argumento.
Parâmetros do DownloadDirectoryRequest
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
|
|
string |
Sim |
Nome do bucket S3 de origem do qual os objetos são baixados. |
|
|
string |
Sim |
Diretório local para baixar arquivos. |
|
|
array |
Não |
Parâmetros adicionais de solicitação de objeto de download para todos os arquivos. |
|
|
array |
Não |
Opções de configuração para o download do diretório. Para obter mais informações sobre as opções de configuração, consulte a seção a seguir. |
|
|
array |
Não |
Matriz de objetos |
|
|
|
Não |
Um rastreador de progresso para todos os downloads. |
| Opção | Tipo | Padrão | Description |
|---|---|---|---|
|
|
string |
'' |
Prefixo para filtragem (se não estiver em |
|
|
bool |
|
Se deve acompanhar o progresso. |
|
|
chamável |
|
Função para filtrar quais objetos do S3 baixar. |
|
|
chamável |
|
Função para personalizar cada solicitação de download. |
|
|
array |
[] |
Argumentos para a |
|
|
bool |
false |
Se deve falhar quando já existe um caminho de arquivo de destino do objeto. |
|
|
chamável |
nulo |
Função para lidar com falhas de download. |
|
|
int |
100 |
O número máximo de downloads simultâneos. |
|
|
int |
varies |
Tamanho da peça para downloads de várias partes quando o tipo de download de várias partes é variado. |
Tipos de opções que podem ser solicitadas $config
| Nome da opção | nome do parâmetro | tipo de parâmetro | informações do parâmetro |
|---|---|---|---|
filter |
$objectKey |
string |
O nome da chave do objeto do bucket. |
download_object_request_modifier |
$requestArgs |
array | Os argumentos da solicitação para cada solicitação de download individual. Para obter mais informações sobre as opções de matriz, consulte a seção de sintaxe do parâmetro do método getObject. |
failure_policy |
$downloadObjectRequestArgs |
array |
Os argumentos da solicitação para cada solicitação de download individual. Para obter mais informações sobre as opções de matriz, consulte a seção de sintaxe do parâmetro do método getObject. |
$downloadDirectoryRequest |
array |
Uma matriz com o bucket de origem e o diretório de destino para a operação do diretório de download. |
|
$reason |
Throwable |
O detentor da exceção que contém informações sobre o que causou a falha. |
|
$downloadDirectoryResult |
DownloadDirectoryResult <add
link> |
O objeto que contém o número de objetos baixados com sucesso e o número que falharam. |
Como as operações de diretório funcionam
Esta seção explica como o S3 Transfer Manager manipula caminhos de arquivo e chaves de objeto durante as operações de diretório.
Tratamento do caminho de upload
Quando você carrega um diretório, o SDK constrói chaves de objeto do S3 a partir de caminhos de arquivo:
-
Calcula o caminho de cada arquivo em relação ao diretório de origem
-
Prepende o
s3_prefixvalor, se especificado (adiciona automaticamente uma barra final) -
Substitui o separador de diretório do sistema operacional pelo
s3_delimiter(padrão)/
A recursive opção controla se os subdiretórios estão incluídos. Quando false (padrão), somente arquivos de nível superior são carregados. Quandotrue, todos os arquivos nos subdiretórios são carregados, preservando a estrutura do diretório nas chaves de objeto.
nota
A chave no S3 para cada arquivo carregado será o prefixo s3 fornecido, por padrão é nulo, mais o caminho relativo do arquivo a partir do diretório de origem especificado. Além disso, substituímos o separador de diretório no nome da chave resolvida pelo delimitador s3 fornecido, que por padrão será /.
Exemplo 1
$sourceDirectory = "/opt/my-upload-directory"; $s3Prefix = "important/"; $s3Delimiter = "/"; // Default value
Estrutura de diretório
/opt/my-upload-directory/ -- my-file1.txt -- my-file-2.txt -- sub-dir/ ---- my-another-file1.txt ---- my-another-file2.txt
As chaves para cada arquivo serão:
$s3Prefix + $fileRelativePath;
- important/my-file1.txt - important/my-file-2.txt - important/sub-dir/my-another-file1.txt - important/sub-dir/my-another-file2.txt
Exemplo 2
$sourceDirectory = "/opt/my-docs"; $s3Prefix = ''; // No provided and it will defaulted to empty string $s3Delimiter = "/"; // Default value
Estrutura de diretório
/opt/my-docs/ -- my-file1.txt -- my-file-2.txt -- sub-dir/ ---- my-another-file1.txt ---- my-another-file2.txt
As chaves para cada arquivo serão:
$s3Prefix + $fileRelativePath;
- my-file1.txt - my-file-2.txt - sub-dir/my-another-file1.txt - sub-dir/my-another-file2.txt
exemplo Tratamento do caminho do diretório de upload
<?php // Source directory: /home/user/photos/ // fla/beach.jpg // fla/sunset.jpg // fla/pool/party.jpg // With s3_prefix: '2023' and recursive: true // Results: // 2023/fla/beach.jpg // 2023/fla/sunset.jpg // 2023/fla/pool/party.jpg
Tratamento do caminho de download
Quando você baixa um diretório, o SDK constrói caminhos de arquivo locais a partir das chaves de objeto do S3:
-
Remove a
s3_prefixda chave do objeto, se especificado -
Substitui o delimitador S3 (
/) pelo separador de diretório do sistema operacional -
Acrescenta o resultado ao diretório de destino
Os downloads são sempre recursivos. O SDK recupera todos os objetos com o prefixo especificado e cria subdiretórios conforme necessário. Ele valida que os caminhos não são resolvidos fora do diretório de destino por motivos de segurança.
exemplo Tratamento do caminho do diretório de download
<?php // S3 objects: // 2023/fla/beach.jpg // 2023/fla/sunset.jpg // 2023/fla/pool/party.jpg // With s3_prefix: '2023' and destination: /home/user/downloads // Results: // /home/user/downloads/fla/beach.jpg // /home/user/downloads/fla/sunset.jpg // /home/user/downloads/fla/pool/party.jpg
nota
O caminho do arquivo para os objetos baixados será resolvido da seguinte forma:
-
O prefixo s3, se fornecido, será removido da chave do objeto.
-
Se o delimitador s3 for diferente do separador de diretório do sistema operacional, o delimitador s3 será substituído pelo separador de diretório do sistema operacional.
Exemplo 1
$s3Prefix = "my-prefix"; $s3Objects = [ "my-prefix/file-1.txt", "my-prefix/file-2.txt", "my-prefix/subdir/file-1.txt" ]; $targetDirectory = "/opt/bucket/downloads/";
Depois que esses objetos forem baixados, serão colocados da seguinte forma:
/opt/bucket/downloads/ -- file-1.txt -- file-2.txt -- subdir/ ---- file-1.txt
Como podemos ver, o prefixo foi removido do caminho final do arquivo dos objetos.
Exemplo 2 - sem prefixo s3
$s3Prefix = ""; // No provided $s3Objects = [ "README.md", "my-docs/file-1.txt", "my-docs/file-2.txt", "my-docs/statements/file-1.txt" ]; $targetDirectory = "/opt/bucket/downloads/";
Depois que esses objetos forem baixados, serão colocados da seguinte forma:
/opt/bucket/downloads/ -- README.md -- my-docs/ ---- file-1.txt ---- file-2.txt ---- statements/ ------ file-1.txt