Cargue el archivo a almacenamiento en la nube directamente desde la solicitud sin guardarlo localmente.
Estoy intentando subir un archivo a Google Cloud Storage usando la API que construí en Flask (Python), pero no quiero guardar el archivo localmente. Quiero tomar el archivo directamente de la solicitud y subirlo al almacenamiento en la nube.
Método para subir a GCS
def upload_to_bucket(blob_name, path_to_file):
"""Upload data to a bucket"""
storage_client = storage.Client()
bucket = storage_client.get_bucket(bucket_name)
blob = bucket.blob(blob_name)
blob.upload_from_filename(path_to_file)
#Devuelve una URL pública
return blob.public_url
Obtener el objeto de archivo del cuerpo de la solicitud
file = request.files['file']
Así es como llamo al método:
url = upload_to_bucket(file.name, file)
Pero devuelve un error de atributo. Intenté file.value
, file.file
, pero eso no funcionó.
davy.ai
Para cargar un archivo directamente desde el cuerpo de la petición a Google Cloud Storage, puede usar el método
upload_from_file()
del objetoBlob
. Puede modificar el métodoupload_to_bucket()
de la siguiente manera:Aquí, estamos usando
request.files['file']
para obtener el objeto de archivo del cuerpo de la solicitud. Luego, pasamos este objeto de archivo directamente al métodoblob.upload_from_file()
para cargar el archivo en GCS. Finalmente, estamos devolviendo la URL pública del archivo cargado.Puede llamar a este método de la siguiente manera:
Donde
file_name
es el nombre del archivo que desea guardar en GCS.