2011-07-05 5 views
0

J'essaie d'utiliser une classe s3 non définie pour créer un dossier. Je peux créer juste un dossier dans mon compte amazon s3 mais en lançant juste le suivant.Classe Amazon s3 par un dossier de création non créé

Je peux le faire.

$file = "license.txt"; 
if ($s3->putObjectFile($file, $_POST['bucket'], $_POST['folder']."/", S3::ACL_PUBLIC_READ)) { 
     echo "File uploaded."; 
} else { 
     echo "Failed to upload file."; 
} 

qui va créer un dossier dans mon seau, mais quand je lance une boucle, il ne fait pas référence comme un dossier

Toutes les suggestions pourquoi ???

Répondre

2

S3 n'a pas réellement de dossiers.

Chaque compartiment contient uniquement vos fichiers référencés par leur clé/nom de fichier. Il existe une convention selon laquelle si ces noms de fichiers contiennent /, le texte devant chaque / est considéré comme un dossier et de nombreux outils GUI l'utilisent pour afficher une hiérarchie de dossiers.

Par exemple, un fichier portant le nom folder1/folder2/file.txt apparaîtra comme ayant 2 niveaux de profondeur dans folder1 et sous-dossier folder2. Amazon facilite également la recherche dans vos dossiers virtuels à l'aide des paramètres delimiter et prefix. Voir http://docs.amazonwebservices.com/AmazonS3/latest/API/index.html?RESTBucketGET.html

1

Alors que S3 ne supporte pas les répertoires comme ils le pensent généralement, ils supportent une alternative intéressante. Si vous mettez un objet sans contenu (0 octet) et que la clé (nom) se termine par un "/", et que "content-type" = "binaire/octet-stream", il sera traité par S3 en tant que répertoire (dossier). Gardez à l'esprit que ce n'est encore qu'un fichier; cependant, la console le traitera comme un répertoire (dossier) et de nombreux clients SDK le traiteront comme un répertoire (dossier). Pour obtenir vos 0 octets, vous pouvez simplement utiliser le fichier "/ dev/null" au lieu de "license.txt". Pour renommer/copier/supprimer un répertoire, gardez à l'esprit que vous devez rechercher tout ce préfixe de clé (vous obtiendrez l'objet répertoire et tous les autres objets avec ce chemin de répertoire comme préfixe de clé) - Vous devrez copier ces objets dans les objets avec le nouveau préfixe (dans le cas de renommer/supprimer, vous devrez supprimer les anciens préfixes).