Je connais bien AWS Java SDK . J’ai également essayé de parcourir le Javadoc correspondant, mais je ne pouvais pas comprendre comment créer un sous-répertoire, c’est-à-dire un objet de répertoire dans un J'y télécharge des fichiers.
Supposons que bucketName
et dirName
correspondent à un compartiment déjà existant (avec une autorisation publique) et à un nouveau répertoire (objet) qui doit être créé dans le compartiment (c'est-à-dire bucketName/dirName /).
J'ai essayé ce qui suit:
AmazonS3Client s3 = new AmazonS3Client(
new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY));
s3.createBucket(bucketName + "/" + dirName); //throws exception
qui jette une exception sur la deuxième ligne.
Un court extrait qui crée un sous-répertoire et y télécharge des fichiers sera grandement apprécié.
Il n'y a pas de "sous-répertoires" dans S3. Il y a des seaux et des clés dans les seaux.
Vous pouvez émuler des répertoires traditionnels à l'aide de recherches de préfixes. Par exemple, vous pouvez stocker les clés suivantes dans un compartiment:
foo/bar1
foo/bar2
foo/bar3
blah/baz1
blah/baz2
puis faites une recherche de préfixe pour foo/
et vous obtiendrez:
foo/bar1
foo/bar2
foo/bar3
Voir AmazonS3.listObjects
pour plus de détails.
Update: En supposant que vous ayez déjà un compartiment existant, la clé sous ce compartiment contiendrait le /
:
s3.putObject("someBucket", "foo/bar1", file1);
s3.putObject("someBucket", "foo/bar2", file2);
...
Ensuite, vous pouvez lister toutes les clés commençant par foo/
:
ObjectListing listing = s3.listObjects("someBucket", "foo/");
S3 ne voit pas les répertoires de la même manière que nous le faisons sur nos systèmes d'exploitation. Voici comment vous pouvez créer un répertoire:
public static void createFolder(String bucketName, String folderName, AmazonS3 client) {
// create meta-data for your folder and set content-length to 0
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(0);
// create empty content
InputStream emptyContent = new ByteArrayInputStream(new byte[0]);
// create a PutObjectRequest passing the folder name suffixed by /
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName,
folderName + SUFFIX, emptyContent, metadata);
// send request to S3 to create folder
client.putObject(putObjectRequest);
}
Comme Casablanca l'a déjà dit, vous pouvez télécharger des fichiers dans des répertoires comme celui-ci:
s3.putObject("someBucket", "foo/bar1", file1);
Lisez l'intégralité du tutoriel ici pour plus de détails, et le plus important, c'est que vous trouverez des informations sur la suppression des répertoires.
si vous voulez créer un dossier, vous devez utiliser la commande put en utilisant les touches suivantes pour créer folder1 dans:
à la racine du compartiment -> folder1/folder1_ $ folder $
dans chemin folder2/folder3/-> folder2/folder3/folder1/folder1_ $ folder $
C'est toujours all_previous_folders/folderName/folderName_ $ folder $