Il s'agit d'une solution pour tous ceux qui utilisent Java et la bibliothèque S3 java fournie par Amazon. Si vous utilisez com.amazonaws.services.s3.AmazonS3
vous pouvez utiliser un GetObjectMetadataRequest
qui permet d'interroger la longueur de l'objet.
Les bibliothèques que vous devez utiliser sont :
<!-- https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-s3 -->
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.511</version>
</dependency>
Importations :
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.*;
Et le code dont vous avez besoin pour obtenir la longueur du contenu :
GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest(bucketName, fileName);
final ObjectMetadata objectMetadata = s3Client.getObjectMetadata(metadataRequest);
long contentLength = objectMetadata.getContentLength();
Avant de pouvoir exécuter le code ci-dessus, vous devez construire le client S3. Voici un exemple de code pour cela :
AWSCredentials credentials = new BasicAWSCredentials(
accessKey,
secretKey
);
s3Client = AmazonS3ClientBuilder.standard()
.withRegion(clientRegion)
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.build();
2 votes
Avez-vous essayé une requête HEAD au lieu d'une requête GET ?
0 votes
Pourriez-vous afficher ce que votre
HEAD request
était, s'il vous plaît ? J'essaie également de faire cela et je ne sais pas comment m'y prendre.1 votes
Consultez ma réponse ci-dessous, il existe un moyen plus simple d'utiliser le CLI.