Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void upload(InputStream is, String bucketName, String key) throws IOException{
- long partSize = 5 * 1024 * 1024;
- InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, key);
- InitiateMultipartUploadResult result = amazonS3.initiateMultipartUpload(request);
- String row;
- List<PartETag> partETags = new ArrayList<>();
- BufferedReader br = new BufferedReader(new InputStreamReader(is));
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- while ((row = br.readLine()) != null) {
- if (baos.size() >= partSize) {
- uploadPart(baos, partETags, result.getUploadId(), key);
- baos.reset();
- } else {
- row += 'n';
- baos.write(row.getBytes(Charset.forName("UTF-8")));
- }
- }
- CompleteMultipartUploadRequest compRequest = new CompleteMultipartUploadRequest(
- bucketName,
- key,
- result.getUploadId(),
- partETags);
- amazonS3.completeMultipartUpload(compRequest);
- }
- private void uploadPart(ByteArrayOutputStream baos, List<PartETag> partETags, String uploadId, String key) throws IOException
- {
- int partNumber = partETags.size()+1;
- log.info("Upload part: " + partNumber + " to: " + key + " with size: " + baos.size());
- InputStream inputStream = new ByteArrayInputStream(baos.toByteArray());
- UploadPartRequest uploadRequest = new UploadPartRequest()
- .withBucketName(this.outputBucket)
- .withKey(key)
- .withUploadId(uploadId)
- .withInputStream(inputStream)
- .withPartNumber(partNumber)
- .withPartSize(baos.size());
- partETags.add(s3.uploadPart(uploadRequest));
- }
Add Comment
Please, Sign In to add comment