Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

377
Vistas
Cómo eliminar correctamente el objeto s3 usando s3 sdk

Tengo un cubo donde los usuarios cargan su contenido. así es como se ve el cubo

 bucket name : example-cdn Directory under it : files

Ahora, si la identificación del usuario es 2 y el tiempo es 1492693589 , ahora, si el usuario carga una imagen, la URL será

 example-cdn/files/2/1492693589/image.png

Ahora, si trato de eliminar esa imagen en particular, todo el directorio se elimina con el archivo.

aquí está el código

 $s3 = new S3Client([ 'version' => 'latest', 'region' => 'ap-south-1', 'credentials' => array( 'key' => '************', 'secret' => '*****************************' ) ]); $s3->deleteObject(array('Bucket' => "example-cdn", 'Key' => "files/2/1492693589/image.png"));

Ahora, cuando se ejecute la línea anterior, también elimine la carpeta de file y 2 carpetas. ¿Cómo puedo eliminar solo el archivo de imagen image.png

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Las carpetas no existen en Amazon S3.

Amazon S3 es una tienda de objetos planos . No almacena archivos dentro de carpetas/directorios. Sin embargo, los archivos se pueden almacenar con un nombre de archivo ('Clave') que incluya barras, por ejemplo, images/cat.jpg . Esto da la ilusión de directorios, pero en realidad no crea el directorio.

Por ejemplo, este comando creará el directorio de images simplemente nombrando un archivo como si estuviera en el directorio (simulado):

 aws s3 cp cat.jpg s3://bucket/images/cat.jpg

Al ver el cubo en la consola de administración, se mostrará el directorio de images y cat.jpg estará dentro. ¡Pero en realidad no existe!

Este comando moverá la imagen a un directorio diferente (simulado):

 aws s3p mv s3://bucket/images/cat.jpg s3://bucket/pictures/cat.jpg

Esto hará que desaparezca el directorio de images y aparecerá un nuevo directorio de pictures . Nuevamente, esto se debe a que los directorios en realidad no existen; simplemente se muestran de esa manera porque a los humanos les gusta el concepto de directorios.

Cuando se trabaja a través de la API de AWS, los directorios se conocen como prefijos comunes . Se comportan como directorios, pero no existen.

Pero, podría preguntarse: "¿Qué sucede si voy a la consola de administración de Amazon S3 y hago clic en Crear carpeta ? ¡Seguramente eso crea una carpeta!"

En realidad no. Simplemente crea un archivo de cero bytes con el nombre del directorio, lo que obliga a que aparezca el directorio. Eliminar ese archivo de cero bytes hará que el directorio desaparezca porque ya no hay nada en esa ruta.

En pocas palabras: los directorios no existen, pero siéntase libre de mover cosas dentro y fuera de ellos como si existieran.

over 4 years ago · Santiago Trujillo Denunciar

0

Los cubos S3 emulan carpetas. En realidad no existen. Si no hay una clave con el prefijo "archivos/2/", entonces no habrá una carpeta visible.

Si realmente desea que las "carpetas" no desaparezcan, asegúrese de que haya un archivo allí para que aparezcan.

Para aclarar: esto no es exclusivo del SDK, así es como funciona el servicio.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda