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.pngAhora, 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
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.
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.