2 votes

Envoi d'images vers le stockage en nuage de google à l'aide de google app engine

J'ai écrit une simple application web en utilisant google app engine en python qui permet aux utilisateurs de télécharger des images et de les stocker quelque part (pour l'instant, j'utilise simplement le blob store en me basant sur les tutoriels).

Maintenant, je veux envoyer les images à google cloud storage, mais je ne sais pas comment faire. Ils fournissent deux modes lors de l'ouverture d'un fichier : "a" et "r". Aucun d'entre eux, à ma connaissance, ne concerne les flux binaires.

Comment puis-je envoyer une image à google cloud storage ? Des extraits de code ou des références seraient les bienvenus. J'ai l'intention d'envoyer également de petits échantillons audio et d'autres données binaires.

En outre, comment puis-je supprimer l'image si un utilisateur souhaite la supprimer ? Il ne semble pas y avoir de méthode de suppression disponible.

4voto

Stuart Langley Points 5018

Voici un simple gestionnaire de téléchargement qui écrira le blob qui a été téléchargé sur bigstore. Notez que vous devez avoir ajouté le compte de service de votre application au compte de l'équipe qui gère le seau bigstore.

class UploadHandler(blobstore_handlers.BlobstoreUploadHandler):
  def post(self):
    upload_files = self.get_uploads('file')
    blob_info = upload_files[0]
    in_file_name = files.blobstore.get_file_name(blob_info.key())
    infile = files.open(in_file_name)
    out_file_name = '/gs/mybucket/' + blob_info.filename
    outfile = files.gs.create(out_file_name,
                              mime_type = blob_info.content_type)

    f = files.open(outfile, 'a')
    chunkSize = 1024 * 1024
    try:
      data = infile.read(chunkSize)
      while data:
        f.write(data)
        data = infile.read(chunkSize)
    finally:
      infile.close()
      f.close()

    files.finalize(outfile)

2voto

mjibson Points 7176

Il n'y a pas de différence entre un flux binaire et un flux de texte dans le stockage en nuage. Vous écrivez simplement des chaînes de caractères (ou des chaînes d'octets) dans le fichier ouvert dans la section "a" mode. Suivez les instructions aquí .

De plus, si vous servez des images à partir du blobstore, il est probablement préférable d'utiliser la fonction get_serving_url() de aquí mais cela dépend de votre application.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X