Como conceder acesso público aos arquivos
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Um caso de uso comum é tornar seus arquivos acessíveis publicamente pela Web.
É possível fazer isso no ambiente padrão do PHP 5 de uma das seguintes maneiras:
- Exiba os arquivos no Google Cloud Storage usando um script: seu aplicativo exibe o arquivo.
- Disponibilize os arquivos do Google Cloud Storage, que disponibiliza o arquivo diretamente.
- Exiba arquivos enviados com seu aplicativo usando o gerenciador estático em
app.yaml
.
Observe que a última metodologia não usa o Cloud Storage.
Como exibir arquivos de um script
Se você quiser exibir arquivos do aplicativo, importe a classe CloudStorageTools
do App Engine:
Agora, use o CloudStorageTools::serve para exibir o arquivo do Google Cloud Storage:
A disponibilização de arquivos do aplicativo dessa maneira permite que o desenvolvedor determine a identidade do usuário e garanta que apenas usuários autorizados acessem o arquivo. A desvantagem dessa abordagem é que seu aplicativo precisa executar esse código para disponibilizar o arquivo, o que consome horas de instâncias e gera custos.
Como disponibilizar arquivos diretamente do Google Cloud Storage
Existe uma forma mais rápida e econômica de exibir arquivos do aplicativo, conforme mencionado acima: exibi-los do Cloud Storage diretamente via HTTP. Os arquivos precisam ser configurados para serem lidos por usuários anônimos no momento da gravação do arquivo. Como mostraremos no snippet abaixo, você define a opção de stream acl
como public-read
.
Depois que o arquivo for gravado no Cloud Storage como publicamente legível, você precisará acessar o URL público do arquivo, usando CloudStorageTools::getPublicUrl.
No exemplo a seguir, criamos um arquivo legível publicamente com alguns números aleatórios, gravando-o em um bucket do Cloud Storage, e redirecionamos do Cloud Storage para esse arquivo.
A limitação dessa abordagem é que não há controle sobre quem pode acessar o arquivo, porque ele pode ser lido por qualquer pessoa.
Como disponibilizar arquivos enviados com o aplicativo
Essa opção está descrita na íntegra nesta página.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-08-19 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-08-19 UTC."],[[["\u003cp\u003eThis API supports first-generation runtimes and is applicable when upgrading to corresponding second-generation runtimes, while migration to App Engine PHP 7/8 runtime requires consulting the migration guide.\u003c/p\u003e\n"],["\u003cp\u003eFiles can be made publicly accessible via the web in the PHP 5 standard environment by serving them from a script, serving them directly from Google Cloud Storage, or using the static handler in \u003ccode\u003eapp.yaml\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eServing files from a script through the App Engine \u003ccode\u003eCloudStorageTools\u003c/code\u003e class allows for user identity verification, but it consumes instance hours, and serving directly from Cloud Storage is faster and more cost-effective, but it lacks user access control.\u003c/p\u003e\n"],["\u003cp\u003eTo serve files directly from Cloud Storage, files must be configured as readable by anonymous users, utilizing the \u003ccode\u003epublic-read\u003c/code\u003e ACL setting and \u003ccode\u003eCloudStorageTools::getPublicUrl\u003c/code\u003e to obtain the public URL.\u003c/p\u003e\n"],["\u003cp\u003eServing files uploaded with your app can be achieved, for more details consult the link provided regarding reading and writing files.\u003c/p\u003e\n"]]],[],null,["# Providing Public Access to Files\n\n| This API is supported for first-generation runtimes and can be used when [upgrading to corresponding second-generation runtimes](/appengine/docs/standard/\n| php-gen2\n|\n| /services/access). If you are updating to the App Engine PHP 7/8 runtime, refer to the [migration guide](/appengine/migration-center/standard/migrate-to-second-gen/php-differences) to learn about your migration options for legacy bundled services.\n\n\u003cbr /\u003e\n\nA common use case is making your files publicly accessible via the web.\nYou can do this in the PHP 5 standard environment in any of these ways:\n\n- Serve files in Google Cloud Storage from a script: your app serves the file.\n- Serve files from Google Cloud Storage, which serves the file directly.\n- Serving files uploaded with your app by using the static handler in `app.yaml`.\n\nNote that the last methodology does not use Cloud Storage.\n\nServing files from a script\n---------------------------\n\nIf you want to serve files from your app, import the App Engine\n`CloudStorageTools` class: \n\n use google\\appengine\\api\\cloud_storage\\CloudStorageTools;\n\nNow use [CloudStorageTools::serve](/appengine/docs/legacy/standard/php/refdocs/classes/google.appengine.api.cloud_storage.CloudStorageTools#method_serve)\nto serve the file from Google Cloud Storage: \n\n CloudStorageTools::serve(\"gs://${my_bucket}/serve.txt\");\n\nServing files from the app in this way allows the developer to determine user\nidentity and ensure that only authorised users access the file. The downside\nto this approach is that your application needs to run this code to serve the\nfile, which consumes instance hours and thus incurs cost.\n\nServing files directly from Google Cloud Storage\n------------------------------------------------\n\nThere is a faster and more cost-effective way to serve files than serving them\nfrom the app, as mentioned above: serving them from Cloud Storage directly via\nHTTP. The files need to be configured to be readable by anonymous users at file\nwrite time. As we'll show in the snippet below, you set the `acl` stream option\nto `public-read`.\n\nOnce the file is written to Cloud Storage as publicly readable, you need to\nget the public URL for the file, using\n[CloudStorageTools::getPublicUrl](/appengine/docs/legacy/standard/php/refdocs/classes/google.appengine.api.cloud_storage.CloudStorageTools#method_getPublicUrl).\n\nIn the following example, we create a public-readable file containing some\nrandom numbers, writing it to a Cloud Storage bucket, and redirect to\nthat file from Cloud Storage. \n\n $options = ['gs' =\u003e ['acl' =\u003e 'public-read']];\n $context = stream_context_create($options);\n $fileName = \"gs://${my_bucket}/public_file.txt\";\n file_put_contents($fileName, $publicFileText, 0, $context);\n\n $publicUrl = CloudStorageTools::getPublicUrl($fileName, false);\n\nThe limitation of this approach is that there is no control over who can access\nthe file, because the file is readable by anyone.\n\nServing files uploaded with your app\n------------------------------------\n\nThis option is fully described under\n[Is there any other way to read and write files](/appengine/docs/legacy/standard/php/googlestorage#is_there_any_other_way_to_read_and_write_files)."]]