Comments (2)
same logic,
multipart upload is OK, can upload successfully.
@Override
public void createMultipartObject(String container, String object, InputStream data, long length, Config config) {
super.createMultipartObject(container, object, data, length, config);
CreateMultipartUploadRequest mRequest = CreateMultipartUploadRequest.builder()
.storageClass(storageClass)
.bucket(container)
.key(object)
.build();
// Create a list of ETag objects. You retrieve ETags for each object part uploaded,
// then, after each individual part has been uploaded, pass the list of ETags to
// the request to complete the upload.
List<CompletedPart> partETags = new ArrayList<CompletedPart>();
try {
CreateMultipartUploadResponse mResponse = client.createMultipartUpload(mRequest);
String uploadId = mResponse.uploadId();
long position = 0;
long tempPartSize; // avoid to change the partSize, bug fix:#25
for (int i = 1; position < length; i++) {
// Because the last part could be less than 5 MiB, adjust the part size as
// needed.
tempPartSize = Math.min(partSize, (length - position));
// Create the request to upload a part.
UploadPartRequest uRequest = UploadPartRequest.builder()
.bucket(container)
.key(object)
.uploadId(uploadId)
.partNumber(i)
.build();
// 2024.6.25, sine.
// RequestBody rBody = RequestBody.fromInputStream(data, tempPartSize); // not support resetting.
// set read limit to 128KB, don't know whether useful or not.
// warning: no QA!
RequestBody rBody = RequestBody.fromContentProvider(
ContentStreamProvider.fromInputStream(data),
tempPartSize, Mimetype.MIMETYPE_OCTET_STREAM);
// Upload the part and add the response's ETag to our list.
UploadPartResponse uResponse = client.uploadPart(uRequest, rBody);
CompletedPart tempPart = CompletedPart.builder()
.partNumber(i)
.eTag(uResponse.eTag())
.build();
partETags.add(tempPart);
position += tempPartSize;
}
// Complete the multipart upload.
CompleteMultipartUploadRequest compRequest = CompleteMultipartUploadRequest.builder()
.bucket(container)
.key(object)
.uploadId(uploadId)
.multipartUpload(CompletedMultipartUpload.builder().parts(partETags).build())
.build();
client.completeMultipartUpload(compRequest);
} catch (S3Exception se) {
logger.debug("Service exception thrown.");
throw new StorageException(se);
} catch (SdkClientException sce) {
logger.debug("Client exception thrown.");
throw new StorageTimeoutException(sce);
}
}
from aws-sdk-java-v2.
can we set it as we want?
from aws-sdk-java-v2.
Related Issues (20)
- `S3TransferManager` / `S3AsyncClient` does not seem to use `SdkAdvancedAsyncClientOption.FUTURE_COMPLETION_EXECUTOR`'s `Executor`. HOT 1
- S3TransferManager - Support download / upload resume in the event of host machine power loss HOT 1
- service is crashed while uploading large files to S3 using aws sdk2 HOT 7
- Add support of Request-level credentials override in DefaultS3CrtAsyncClient
- S3 download leak connection
- AWS Java SDK v2 does not respect AWS_MAX_ATTEMPTS HOT 1
- How to configure KMS vpc endpoint while creating s3Encryption client and s3async client
- DynamoDB Enhanced: Support schema mixins HOT 2
- In S3 library `ResponseInputStream<?>` doesn't seem to support the `InputSteam` `int read(byte[] buffer)` method correctly
- DynamoDB enhanced client - Add "Select" in ScanEnhancedRequest (short issue description)
- Add support of Request-level overrideConfiguration in s3 async multipart upload HOT 2
- CRaC support for AWS SDK for Java
- equivalent of static RetryCondition defaultRetryCondition() HOT 5
- InternetGatewayAttachment state and stateAsString mismatch HOT 2
- Support for IP Ranges in NO_PROXY Environment Variable
- DynamoDbEnhancedAsyncClient#createTable() fails to generate secondary indexes HOT 2
- AwsV4HttpSigner does not contain all features from Aws4Signer
- Support for using Lombok @Builder on class annotated with DynamoDbImmutable containing ignored attributes
- Equivalents of BackoffStrategy.defaultStrategy(), BackoffStrategy.defaultThrottlingStrategy() and RetryCondition.defaultRetryCondition() HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from aws-sdk-java-v2.