Существуют ли низкоуровневые классы Swift для загрузки файлов в AWS S3 - PullRequest
0 голосов
/ 13 сентября 2018

Вот тот же код в Java, интересно, есть ли у них быстрый эквивалент, который позволяет разбивать файлы на части:

long partSize = 5 *1024* 1024;

        try {
            AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                                    .withRegion(clientRegion)
                                    .withCredentials(new ProfileCredentialsProvider())
                                    .build();

            List<PartETag> partETags = new ArrayList<PartETag>();


            InitiateMultipartUploadRequest initRequest = new InitiateMultipartUploadRequest(bucketName, keyName);
            InitiateMultipartUploadResult initResponse = s3Client.initiateMultipartUpload(initRequest);

            long filePosition = 0;
            for (int i = 1; filePosition < contentLength; i++) {
                partSize = Math.min(partSize, (contentLength - filePosition));


                UploadPartRequest uploadRequest = new UploadPartRequest()
                        .withBucketName(bucketName)
                        .withKey(keyName)
                        .withUploadId(initResponse.getUploadId())
                        .withPartNumber(i)
                        .withFileOffset(filePosition)
                        .withFile(file)
                        .withPartSize(partSize);

                UploadPartResult uploadResult = s3Client.uploadPart(uploadRequest);
                partETags.add(uploadResult.getPartETag());

                filePosition += partSize;
            }


            CompleteMultipartUploadRequest compRequest = new CompleteMultipartUploadRequest(bucketName, keyName,
                    initResponse.getUploadId(), partETags);
            s3Client.completeMultipartUpload(compRequest);
        }

1 Ответ

0 голосов
/ 14 сентября 2018

Вы можете использовать AWSS3 клиент из AWSiOSSDKv2 здесь: https://github.com/aws/aws-sdk-ios

Запрос, который вы ищете, выглядит так: https://github.com/aws/aws-sdk-ios/blob/master/AWSS3/AWSS3Model.h#L6618 и может быть вызван через этот API:https://github.com/aws/aws-sdk-ios/blob/master/AWSS3/AWSS3Service.h#L1994

Спасибо, Рохан

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...