Como ler e gravar arquivos

No ambiente padrão App Engine para PHP 5, o sistema de arquivos local em que seu aplicativo está implantado não é gravável. Esse comportamento garante a segurança e escalonabilidade do aplicativo.

No entanto, se o aplicativo precisar gravar e ler arquivos no ambiente de execução, o ambiente padrão para PHP 5 fornecerá um wrapper de stream integrado ao Google Cloud Storage. Isso permite que você use muitas das funções padrão do sistema de arquivos PHP para ler e gravar arquivos.

Há duas maneiras de gravar arquivos no Google Cloud Storage:

  • Gravar arquivos do aplicativo
    • Gravação de arquivos simples
    • Gravação de arquivos em streaming.
  • Permitir que o usuário faça upload dos arquivos para o Google Cloud Storage

Como gravar arquivos do aplicativo

Se você gravar arquivos do aplicativo, poderá gravar o arquivo inteiro de uma vez ou fazer streaming da gravação do arquivo.

O wrapper de stream do App Engine para Cloud Storage é integrado ao ambiente de execução e é usado quando você fornece um nome de arquivo que começa com gs://. O wrapper requer que o nome do bucket ou do objeto de arquivo esteja no formato:

gs://bucket_name/desired_object_name

Gravação de arquivos simples

Para gravar dados no Google Cloud Storage do seu aplicativo, use file_put_contents, usando um URL de armazenamento em nuvem válido. Exemplo:

file_put_contents("gs://${my_bucket}/hello.txt", $newFileContent);

em que my_bucket é um bucket do Google Cloud Storage configurado corretamente.

Se preferir, caso queira usar as opções de stream para fornecer permissões, armazenamento em cache e/ou opções de metadados, você poderá gravar o arquivo da seguinte maneira:

$options = ['gs' => ['Content-Type' => 'text/plain']];
$context = stream_context_create($options);
file_put_contents("gs://${my_bucket}/hello_options.txt", $newFileContent, 0, $context);

Gravação de arquivos em streaming.

Como alternativa, você pode usar fopen/fwrite para gravar dados em streaming:

$fp = fopen("gs://${my_bucket}/hello_stream.txt", 'w');
fwrite($fp, $newFileContent);
fclose($fp);

Quando você usa streaming, observe que os dados são liberados para o Google Cloud Storage em partes menores. Você não precisa saber antecipadamente o tamanho total dos dados a serem gravados. Ele será calculado quando o recurso de arquivo for fechado.

Esse é um jeito básico de gravar arquivos. Para casos de uso especiais e gerenciamento mais avançado de arquivos, consulte os tópicos listados em Próximos passos.

Como excluir arquivos

Para excluir o próprio arquivo, use a função unlink() (em inglês) do PHP.

Uploads de usuários

Para detalhes sobre essa opção de gravação de arquivo, consulte Como permitir que usuários façam upload de arquivos.

Como ler arquivos

Para informações sobre como ler arquivos do Google Cloud Storage, consulte Como conceder acesso público a arquivos.

Configuração e requisitos

Você precisa ativar o Google Cloud Storage e criar um bucket. Consulte Configuração para mais detalhes.

Funções permitidas do sistema de arquivos do PHP 5

Muitas das funções de arquivo do PHP 5 mais usadas são permitidas também com as funções informativas e de diretório. Para uma lista completa das funções do PHP permitidas, consulte Funções do sistema de arquivos PHP 5 compatíveis.

Recursos estendidos fornecidos pela API Tools do Cloud Storage

O wrapper de stream do Google Cloud Storage permite usar chamadas do sistema de arquivos PHP. No entanto, há recursos estendidos disponíveis que você pode precisar para uso ideal do Google Cloud Storage. Esses recursos estendidos são fornecidos na API Cloud Storage Tools:

Essa API oferece um conjunto de funções que permitem a disponibilização de arquivos e imagens, além de outros utilitários úteis. Explicaremos várias dessas funções nas outras páginas de tópicos.

Há alguma outra maneira de ler e gravar arquivos?

Um aplicativo PHP 5 do App Engine precisa usar o wrapper de stream do Cloud Storage para gravar arquivos no ambiente de execução. No entanto, se um aplicativo precisar ler arquivos, e esses arquivos forem estáticos, você poderá ler arquivos estáticos enviados com seu aplicativo usando funções de sistema de arquivos PHP, como file_get_contents.

Exemplo:

$fileContents = file_get_contents($filePath);

em que o caminho especificado precisa ser relativo ao script que o acessa.

É preciso fazer upload dos arquivos em um subdiretório do aplicativo ao implantar o aplicativo no App Engine e configurar o arquivo app.yaml para que o aplicativo possa acessar esses arquivos. Para obter detalhes completos, consulte Configuração do aplicativo PHP 5 com app.yaml.

Na configuração do app.yaml, observe que se você usar um arquivo estático ou um gerenciador de diretório (static_files ou static_dir ), deverá especificar application_readable definido como verdadeiro, senão seu aplicativo não poderá ler os arquivos. No entanto, se os arquivos forem disponibilizados por um gerenciador script, isso não será necessário, porque esses arquivos são legíveis por gerenciadores de script por padrão.

A seguir

Leia os tópicos a seguir para ver detalhes sobre o uso da API Cloud Storage Tools: