Когда пытается получить части поля: Число всегда задано нулем в S3 AWS SDK V2 - PullRequest
0 голосов
/ 29 мая 2020

Мне нужно получить значение partsCount, когда я вызываю метод headObject в классе S3Client. Этот класс возвращает объект, который является экземпляром HeadObjectResponse. Но я не знаю, почему поле partsCount всегда имеет значение NULL, хотя я загружаю файл с помощью многостраничной загрузки.

Кто-нибудь знает, что моя ошибка - при загрузке или при вызове метода headObject?

Это мой код для многостраничной загрузки

private void uploadMultiPartFileToS3(byte[] fileByte, String fileName, String bucketName){
    int bufferByte = propertiesValue.getBufferSize();
    int fileSize = fileByte.length;
    int totalPartitions = (fileSize + bufferByte - 1) / bufferByte;

    List<CompletedPart> parts = new ArrayList<>();
    String uploadId = getUploadIDForMultipartUpload(fileName, bucketName);

    for (int i = 0; i < totalPartitions; i++) {
      parts.add(uploadOnePart(bucketName, fileName, uploadId, fileByte, i));
    }

    CompletedMultipartUpload completedMultipartUpload = CompletedMultipartUpload.builder().parts(parts).build();

    CompleteMultipartUploadRequest completeMultipartUploadRequest = CompleteMultipartUploadRequest.builder()
        .bucket(bucketName)
        .key(fileName)
        .uploadId(uploadId)
        .multipartUpload(completedMultipartUpload).build();

    s3client.completeMultipartUpload(completeMultipartUploadRequest);
}

И это мой код, когда я вызвать метод headObject

private HeadObjectResponse getHeadOfObject(String bucketName, String key){
    HeadObjectRequest req = HeadObjectRequest.builder().bucket(bucketName).key(key).build();
    return s3client.headObject(req);
}
...