Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.jcruzmartini.g2llc;
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.net.URI;
- import java.net.URISyntaxException;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import com.amazonaws.services.s3.AmazonS3Client;
- import com.amazonaws.services.s3.model.ObjectMetadata;
- public class S3FileUploadManager {
- private static final Logger LOGGER = LoggerFactory.getLogger(S3FileUploadManager.class);
- private final AmazonS3Client s3;
- private final String bucketName;
- public S3FileUploadManager(final AmazonS3Client s3, final String bucketName) {
- this.s3 = s3;
- this.bucketName = bucketName;
- }
- public S3FileUploader upload(final String key, final String contentType, int size) {
- return new S3FileUploader(key, contentType, size);
- }
- public S3FileUploader upload(final String key, final String contentType) {
- return new S3FileUploader(key, contentType);
- }
- private void upload(final String key, final String contentType, final byte[] contents, final int size) {
- final ObjectMetadata metadata = new ObjectMetadata();
- metadata.setContentLength(size);
- metadata.setContentType(contentType);
- final ByteArrayInputStream stream = new ByteArrayInputStream(contents, 0, size);
- s3.putObject(bucketName, key, stream, metadata);
- }
- private class UploadStream extends ByteArrayOutputStream {
- public UploadStream() {
- super();
- // TODO Auto-generated constructor stub
- }
- public UploadStream(int size) {
- super(size);
- // TODO Auto-generated constructor stub
- }
- @Override
- public void close() {
- }
- public synchronized byte[] getBuffer() {
- return buf;
- }
- }
- public class S3FileUploader {
- private final String key;
- private final String contentType;
- private final UploadStream stream;
- public S3FileUploader(final String key, final String contentType, int size) {
- this.stream = new UploadStream( size);
- this.key = key;
- this.contentType = contentType;
- }
- public S3FileUploader(final String key, final String contentType) {
- this.stream = new UploadStream();
- this.key = key;
- this.contentType = contentType;
- }
- public OutputStream getStream() {
- return stream;
- }
- public void upload() {
- try {
- stream.flush();
- } catch (IOException e) {
- LOGGER.error("Error flushing stream", e);
- }
- S3FileUploadManager.this.upload(key, contentType, stream.getBuffer(), stream.size());
- }
- public URI getTargetUri() {
- try {
- return new URI("s3", bucketName, '/' + key, null);
- } catch (final URISyntaxException e) {
- LOGGER.error("Error formatting URI. bucketName={}, key={}", bucketName, key, e);
- throw new RuntimeException(e);
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment