Visão geral da API Blobstore para pacotes de serviços legados

A API Blobstore permite que seu aplicativo disponibilize objetos de dados, chamados blobs, que são muito maiores do que o tamanho permitido para objetos no serviço do Datastore. Os blobs são úteis para exibir arquivos grandes, como arquivos de vídeo ou de imagem, e para permitir que os usuários façam upload de arquivos de dados grandes. Blobs são criados fazendo upload de um arquivo através de uma solicitação HTTP. Normalmente, seus aplicativos fazem isso apresentando ao usuário um formulário com um campo de upload de arquivos. Quando o formulário é enviado, o Blobstore cria um blob a partir do conteúdo do arquivo e retorna uma referência opaca ao blob, chamada de chave blob, que você pode usar mais tarde para disponibilizar o blob. O aplicativo pode disponibilizar o valor de blob completo em resposta a uma solicitação do usuário ou pode ler o valor diretamente usando uma interface semelhante a um arquivo de streaming.

Apresentação do Blobstore

O Google App Engine inclui o serviço Blobstore. Com ele, os aplicativos podem disponibilizar objetos de dados, limitados somente pela quantidade de dados que podem ser salvos por upload ou download em uma única conexão HTTP. Esses objetos são chamados de valores do Blobstore ou blobs. Os valores do Blobstore são disponibilizados como respostas de gerenciadores de solicitações e criados como uploads por meio de formulários da Web. Os aplicativos não criam dados de blob diretamente. Na verdade, isso é feito indiretamente por um formulário da Web enviado ou outra solicitação HTTP POST. É possível disponibilizar os valores do Blobstore para o usuário ou acessá-los pelo aplicativo em um stream semelhante a um arquivo usando a API Blobstore.

Para solicitar que um usuário faça upload de um valor do Blobstore, o aplicativo exibe um formulário da Web com um campo de upload de arquivos. O aplicativo gera o URL de ação do formulário chamando a API Blobstore. O navegador do usuário faz upload do arquivo diretamente para o Blobstore por meio do URL gerado. Em seguida, o Blobstore armazena o blob, reescreve a solicitação para conter a chave blob e a transmite para um caminho no aplicativo. Um gerenciador de solicitações nesse caminho do aplicativo pode realizar um processamento extra do formulário.

Para disponibilizar um blob, o aplicativo define um cabeçalho na resposta de saída, e o App Engine substitui a resposta pelo valor do blob.

Os blobs não podem ser modificados depois que são criados, mas é possível excluí-los. Cada blob tem um registro de informações correspondente, no repositório de dados, que fornece detalhes sobre o blob, como a hora de criação e o tipo de conteúdo. Você pode usar a chave blob para buscar registros de informações e consultar as propriedades deles.

Como usar o Blobstore

Os aplicativos podem usar o Blobstore para aceitar arquivos grandes como uploads de usuários e disponibilizar esses arquivos. Os arquivos são chamados de blobs após o upload. Os aplicativos não acessam blobs diretamenteEm vez disso, os aplicativos funcionam com blobs por meio de entidades de informações de blob (representadas pela classe ) no Datastore.

O usuário cria um blob enviando um formulário HTML que inclui um ou mais campos de entrada de arquivo. Seu aplicativo conjuntos como o destino (ação) desse formulário, passando à função um caminho de URL de um gerenciador no aplicativo. Quando o usuário envia o formulário, o navegador faz o upload dos arquivos especificados diretamente para o Blobstore. O Blobstore grava novamente a solicitação do usuário e armazena os dados do arquivo enviado, substituindo essas informações por uma ou mais chaves blob correspondentes. Depois disso, o Blobstore transmite a solicitação regravada para o gerenciador no caminho de URL fornecido para .

Esse gerenciador pode realizar um processamento adicional com base na chave blob.

O aplicativo pode ler partes de um valor do Blobstore usando uma

Como fazer upload de um blob

Para criar e fazer upload de um blob, siga este procedimento:

1. Crie um URL de upload

Chame para criar um URL de upload para o formulário que o usuário preencherá, passando o caminho do aplicativo a ser carregado quando o POST do formulário for preenchido.

upload_url = blobstore.create_upload_url("/upload_photo")

Há uma versão assíncrona, create_upload_url_async(). Ela permite que o código do aplicativo continue em execução enquanto o Blobstore gera o URL de upload.

2. Criar um formulário de upload

O formulário precisa incluir um campo de upload de arquivos, e o enctype do formulário precisa estar definido como multipart/form-data. Quando o usuário envia o formulário, o POST é gerenciado pela API Blobstore, que cria o blob. A API também cria um registro de informações para o blob e o guarda no Datastore. Depois, a solicitação reescrita é encaminhada como uma chave blob para o aplicativo no caminho informado.

Não é possível usar um balanceador de carga de aplicativo externo global com um NEG sem servidor para processar solicitações de upload enviadas ao URL /_ah/upload/ retornado da chamada blobstore.create_upload_url. Em vez disso, você precisa encaminhar essas solicitações de upload diretamente para o serviço do App Engine. É possível fazer isso usando o domínio appspot.com ou um domínio personalizado mapeado diretamente para o serviço do App Engine.

3. Implementar o gerenciador de uploads

Nesse gerenciador, você pode armazenar a chave blob com o restante do modelo de dados do seu aplicativo. A chave blob em si permanece acessível a partir da entidade de informações do blob no Datastore. Observe que o blob já estará salvo e as informações do blob estarão no Datastore depois que o usuário tiver enviado o formulário e o gerenciador for chamado. Para evitar que o blob se torne órfão, exclua-o imediatamente se o aplicativo não quiser mantê-lo:

Para todos os apps Flask, todas as chamadas feitas para métodos na classe BlobstoreUploadHandler exigem o request.environ dictionary (solicitação que está sendo importada do módulo flask). Se o aplicativo for um WSGI sem um framework da Web, use o parâmetro environ no método get_uploads(). Ao reescrever a solicitação do usuário, o Blobstore esvazia as partes MIME dos arquivos enviados e adiciona a chave blob como um cabeçalho de parte MIME. O Blobstore preserva todos os outros campos e partes do formulário, transmitindo-os ao gerenciador de upload. Se não for especificado um tipo de conteúdo, o Blobstore tentará deduzi-lo a partir da extensão do arquivo. Se não for possível determinar um tipo de conteúdo, o tipo application/octet-stream será atribuído ao blob recém-criado.

Como exibir um blob

Para disponibilizar blobs, você precisa incluir um gerenciador de download de blob como um caminho do aplicativo. Esse gerenciador passa a chave do blob desejado para blobstore.Send. .