ID da região
O REGION_ID
é um código abreviado que a Google atribui com base na região que seleciona quando cria a sua app. O código não corresponde a um país ou uma província, embora alguns IDs de regiões possam parecer semelhantes aos códigos de países e províncias usados frequentemente. Para apps criadas após
fevereiro de 2020, REGION_ID.r
está incluído nos
URLs do App Engine. Para apps existentes criadas antes desta data, o
ID da região é opcional no URL.
Saiba mais acerca dos IDs de regiões.
Quando carrega diretamente para o Google Cloud Storage, faz um HTTP POST para um URL específico, que vamos descrever dentro de momentos. Em seguida, o App Engine usa um serviço de carregamento específico para processar a publicação e escrever o ficheiro no Google Cloud Storage. Quando a gravação do ficheiro estiver concluída, o App Engine envia uma notificação à sua app a indicar que o carregamento está concluído. Uma vez que a sua app só é invocada após a conclusão, pode usar este método para carregar ficheiros muito grandes, até ao máximo atual de 100 terabytes.
O carregamento de ficheiros pelo utilizador diretamente para o Google Cloud Storage é mais rápido e rentável do que escrever no Google Cloud Storage a partir da sua app do App Engine, uma vez que isto consome horas de instância e incorre em custos. Além disso, a gravação de ficheiros não ocorre num pedido à aplicação. Por conseguinte, está isento do tempo limite de pedido que, de outra forma, se aplicaria e permite carregamentos de ficheiros muito grandes.
Implementar carregamentos de ficheiros
Para implementar o carregamento de ficheiros de utilizadores:
Importar
CloudStorageTools
:Crie o URL de carregamento específico da aplicação através do método CloudStorageTools::createUploadUrl() no seu ficheiro
.php
da seguinte forma:Consulte as opções de
createUploadUrl
para ver detalhes sobre as opções disponíveis. Tenha em atenção quemy_bucket
vai serYOUR_APP_ID
.REGION_ID.r.appspot.com
se usar o contentor predefinido.Tenha em atenção que tem de começar o carregamento para este URL no prazo de 10 minutos após a respetiva criação. Além disso, não pode alterar o URL de forma alguma. O URL é assinado e a assinatura é verificada antes do início do carregamento.
Use este URL como a ação do formulário que usa para aceitar carregamentos, por exemplo:
Após o carregamento dos ficheiros, é feito um POST para o caminho especificado como o primeiro parâmetro para createUploadUrl
; no exemplo acima, este é /upload_handler.php
. O tempo de execução do PHP forma a super global $_FILES
correta e tmp_filename
refere-se ao nome do ficheiro do ficheiro carregado recentemente no Google Cloud Storage.
Por exemplo, suponhamos que o conteúdo de upload_handler.php é o seguinte:
var_dump($_FILES);
O carregamento de um ficheiro denominado hello.txt
pode resultar no seguinte resultado:
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 carregamento, pode ler o ficheiro carregado através do wrapper de fluxo gs://
. Use move_uploaded_file
como faria normalmente para qualquer outro ficheiro carregado, por exemplo:
Opções de createUploadUrl
As opções createUploadUrl
válidas são apresentadas na tabela seguinte:
Opção | Descrição |
---|---|
max_bytes_per_blob |
Número inteiro. Valor predefinido: unlimited . O valor do tamanho máximo permitido para um blob carregado. |
max_bytes_total |
Número inteiro. Valor predefinido: unlimited . O tamanho total de todos os blobs carregados. |
gs_bucket_name |
String. O nome de um contentor do Google Cloud Storage para o qual os blobs devem ser carregados. Se não especificar um valor, o blob é carregado para o contentor predefinido da aplicação. |