Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package ts.service; import java.io.*; import org.apache.log4j.Logger; import org.jets3t.service.S3Service; import org.jets3t.service.S3ServiceException; import org.jets3t.service.ServiceException; import org.jets3t.service.acl.AccessControlList; import org.jets3t.service.acl.GroupGrantee; import org.jets3t.service.acl.Permission; import org.jets3t.service.model.S3Bucket; import org.jets3t.service.model.S3Object; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import ts.entity.UserEntity; import ts.exception.UploadFileException; /** * @author Grishanov Andrey File upload service */ @Service public class FileUploadService { @Autowired private S3Service awsS3; private final Logger LOG = Logger.getLogger(FileUploadService.class); /** * Upload file * * @param file - saved file * @param user - current user */ public void uploadFileToS3(MultipartFile file, UserEntity user) { String fileLocation = null; String bucketName = user.getId().toHexString(); S3Bucket fileBucket = null; try { // get or create bucket if (bucketName != null) { fileBucket = awsS3.getOrCreateBucket(bucketName); } else throw new UploadFileException("bucket cannot null"); S3Object fileObject = new S3Object("profileImg"); // set info file fileObject.setDataInputStream(new ByteArrayInputStream(file.getBytes())); fileObject.setContentLength(file.getBytes().length); fileObject.setContentType("image/jpeg"); // get permissions AccessControlList acl = new AccessControlList(); acl.setOwner(fileBucket.getOwner()); acl.grantPermission(GroupGrantee.ALL_USERS, Permission.PERMISSION_READ); fileObject.setAcl(acl); // put file in bucket awsS3.putObject(fileBucket, fileObject); fileLocation = File.separator + fileBucket.getName() + File.separator + file.getOriginalFilename(); // DocumentEntity doc = new DocumentEntity(file.getOriginalFilename(), fileLocation, user); // documentRepository.save(doc); } catch (S3ServiceException | IOException e) { LOG.error("Failed upload : ", e); } } public String getFileInS3(String bucketName) { String data = null; S3Object obj = new S3Object(); StringBuilder builder = new StringBuilder(); try { // obj = awsS3.getObject(bucketName, "profileImg"); obj = awsS3.getObject("defaultimgbucket", "defaultImg.jpg"); BufferedReader reader = new BufferedReader(new InputStreamReader(obj.getDataInputStream())); data = reader.readLine(); String dat = null; while ((dat = reader.readLine()) != null) { builder.append(dat); } } catch (S3ServiceException e) { LOG.error("Failed download : ", e); try { obj = awsS3.getObject("defaultimgbucket", "defaultImg.jpg"); BufferedReader reader = new BufferedReader(new InputStreamReader(obj.getDataInputStream())); data = reader.readLine(); } catch (S3ServiceException ex) { LOG.error("Failed default download : ", ex); } catch (ServiceException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } } catch (ServiceException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return builder.toString(); } }