Saltar al contenido

¿Cómo crear una carpeta vacía en Google Storage con Google API?

Tenemos la mejor respuesta que encontramos por todo internet. Nuestro deseo es que te sea de mucha ayuda y si deseas aportar algo que nos pueda ayudar a crecer siéntete libre de hacerlo..

Solución:

@SheRey: mirando las carpetas creadas a través de la interfaz web de GCS, el tipo de contenido está configurado en application/x-www-form-urlencoded;charset=UTF-8 pero en realidad no importa. Esto es lo que funcionó para mí en python:

# pip install google-cloud-storage

from google.cloud import storage

gcs_client = storage.Client(project='some_project')
bucket = gcs_client.get_bucket('some_bucket')
blob = bucket.blob('some/folder/name/')

blob.upload_from_string('', content_type='application/x-www-form-urlencoded;charset=UTF-8')

Google Cloud Storage no tiene carpetas ni subdirectorios. Sin embargo, hay algo de soporte para emularlos. How Subdirectories Work de gsutil es una buena lectura para algunos antecedentes.

Los objetos de Google Cloud Storage son un espacio de nombres plano, pero muchas herramientas, incluidas gsutil y la interfaz de usuario de Google Cloud Storage, crean la ilusión de un árbol de archivos jerárquico.

Hay dos convenciones ampliamente utilizadas para crear la ilusión de un subdirectorio vacío:

  1. (recomendado) Cree un objeto que termine en una barra inclinada final. Por ejemplo, para crear un subdirectorio llamado foo en la raíz de un cubo, crearía un objeto vacío (tamaño 0) llamado foo/.

  2. (legado) Crea un objeto con _$folder$ adjunto al nombre. Por ejemplo, para crear un subdirectorio llamado foo en la raíz de un cubo, crearía un objeto vacío (tamaño 0) llamado foo_$folder$.

Tenga en cuenta que la mayoría de las herramientas y utilidades están utilizando el método 1 ahora. El método 2 se usa con menos frecuencia.

Node.js + @google-cloud/[email protected]^2.5.0:

Lo único que necesita hacer es asignar un destino como: / patrón.

Para el siguiente ejemplo, estoy usando uuid como mi nombre de carpeta para simular que cada usuario tiene una carpeta para almacenar sus propios archivos.

 it('should upload file and create a folder correctly', async () => 
    const myStorage = new Storage( keyFilename: path.resolve(__dirname, '../../../.gcp/cloud-storage-admin.json') );
    const bucket = myStorage.bucket('ez2on');
    const fileName = 'mmczblsq.doc';
    const filePath = path.resolve(__dirname, `../../../tmp/$fileName`);
    const uuid = faker.random.uuid();

    await bucket.upload(filePath, 
      destination: `$uuid/$fileName`,
      gzip: true,
      metadata: 
        cacheControl: 'public, max-age=31536000'
      
    );
  );

El resultado es:

ingrese la descripción de la imagen aquí

Aquí están los documentos API para @google-cloud/storage: https://googleapis.dev/nodejs/storage/latest/Bucket.html#upload

Go + cloud.google.com/go/storage

package main

import (
    "cloud.google.com/go/storage"
    "context"
    "fmt"
    "github.com/google/uuid"
    "google.golang.org/api/option"
    "io"
    "log"
    "os"
)

func main() 
    ctx := context.Background()
    opts := option.ClientOption(
        option.WithCredentialsFile(os.Getenv("CredentialsFile")),
    )

    client, err := storage.NewClient(ctx, opts)
    if err != nil 
        log.Fatalf("%v", err)
    
    filename := "mmczblsq.doc"
    filepath := fmt.Sprintf("./tmp/%s", filename)
    file, err := os.Open(filepath)
    if err != nil 
        log.Fatalf("%v", err)
    
    defer file.Close()

    uuidIns, err := uuid.NewUUID()
    if err != nil 
        log.Fatalf("%v", err)
    
    object := fmt.Sprintf("%s/%s", uuidIns, filename)
    log.Printf("object name: %s", object)
    wc := client.Bucket("ez2on").Object(object).NewWriter(ctx)
    if _, err := io.Copy(wc, file); err != nil 
        log.Fatalf("%v", err)
    
    if err := wc.Close(); err != nil 
        log.Fatalf("%v", err)
    


Salida de salida estándar:

☁  upload [master] ⚡  CredentialsFile=/Users/ldu020/workspace/github.com/mrdulin/nodejs-gcp/.gcp/cloud-storage-admin.json go run main.go
2019/07/08 14:47:59 object name: 532a2250-a14c-11e9-921d-8a002870ac01/mmczblsq.doc

Verifique el archivo en la consola de la plataforma de la nube de Google:

ingrese la descripción de la imagen aquí

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *