ID da região
O REGION_ID
é um código abreviado que o Google atribui
com base na região que você selecionou ao criar o aplicativo. O código não
corresponde a um país ou estado, ainda que alguns IDs de região sejam semelhantes
aos códigos de país e estado geralmente usados. Para apps criados após
fevereiro de 2020, o REGION_ID.r
está incluído nos
URLs do App Engine. Para apps existentes criados antes dessa data, o
ID da região é opcional no URL.
Saiba mais sobre IDs de região.
Ao fazer upload diretamente no Google Cloud Storage, você faz uma solicitação HTTP POST para um URL específico, que será descrito em breve. O App Engine usa um serviço de upload específico para processar a postagem e gravar o arquivo no Google Cloud Storage. Quando a gravação do arquivo é concluída, o Google App Engine notifica o aplicativo sobre o término do upload. Como seu aplicativo é invocado apenas após a conclusão, é possível usar este método para fazer upload de arquivos muito grandes, até o máximo atual de 100 terabytes.
O upload de arquivos diretamente para o Google Cloud Storage pelo usuário é mais rápido e econômico do que a gravação no Google Cloud Storage usando o aplicativo do App Engine, já que isso consome horas de instâncias e gera custos. Além disso, a gravação do arquivo não ocorre em uma solicitação para o aplicativo. Portanto, ele está isento do tempo limite da solicitação que se aplica e permite uploads de arquivos muito grandes.
Como implementar uploads de arquivos
Para implementar o upload de arquivos do usuário:
Importe
CloudStorageTools
:Crie o URL de upload específico do aplicativo, usando o método CloudStorageTools::createUploadUrl() no arquivo
.php
da seguinte maneira:Consulte opções
createUploadUrl
para detalhes sobre as opções disponíveis. Observe quemy_bucket
seráYOUR_APP_ID
.REGION_ID.r.appspot.com
se estiver usando o bucket padrão.É necessário iniciar o upload desse URL dentro de 10 minutos após a criação dele. Além disso, não é possível alterar o URL, que é assinado e a assinatura é verificada antes do início do upload.
Use esse URL como a ação do formulário que você utiliza para aceitar uploads. Por exemplo:
Após o upload dos arquivos, um POST é criado para o caminho especificado como o primeiro parâmetro para createUploadUrl
. No exemplo acima, é /upload_handler.php
. O ambiente de execução do PHP forma o $_FILES
super global correto e tmp_filename
refere-se ao nome do arquivo carregado recentemente no Google Cloud Storage.
Por exemplo, suponha que o conteúdo do upload_handler.php seja o seguinte:
var_dump($_FILES);
O upload de um arquivo chamado hello.txt
pode resultar na seguinte saída:
array(1) {
['uploaded_files']=>
array(5) {
['name']=> string(14) 'hello.txt'
['type']=> string(10) 'text/plain'
['tmp_name']=> string(73) 'gs://my_bucket/L2FwcHMtdXBsb2FkL2Jsb2JzL2IxNUFBVGNJNXNTd0VqR0tFSUtDRGxadGc'
['error']=> int(0)
['size']=> int(1452)
}
}
Após a conclusão do upload, leia o arquivo enviado usando o wrapper de stream gs://
. Você usa move_uploaded_file
como faria normalmente para qualquer outro arquivo enviado, por exemplo:
Opções de createUploadUrl
As opções de createUploadUrl
válidas são mostradas na seguinte tabela:
Opção | Descrição |
---|---|
max_bytes_per_blob |
Número inteiro. Valor padrão: unlimited . O valor do maior tamanho permitido para um blob enviado. |
max_bytes_total |
Número inteiro. Valor padrão: unlimited . O tamanho total de todos os blobs enviados. |
gs_bucket_name |
String. O nome de um bucket do Google Cloud Storage ao qual os blobs devem ser enviados. Se você não especificar um valor, o upload do blob será feito para o intervalo padrão do aplicativo. |