ts.service.FileUploadService.java Source code

Java tutorial

Introduction

Here is the source code for ts.service.FileUploadService.java

Source

/*
 * 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();
    }
}