将巨大的base64文件上传到S3存储桶时出错

时间:2020-04-12 22:58:48

标签: java amazon-web-services amazon-s3

我正在尝试将巨大的视频文件上传到s3存储桶。 我正在以base64格式从客户端获取数据,该数据将发送到S3client以上传到我的存储桶,如下所示:-

public class UploadFileService {
    private static final String BUCKET_NAME = "data";
    private static final Regions REGION = Regions.US_EAST_2;

    LoggerUtils loggerUtils = new LoggerUtils ();

    public String uploadFile(String fileData, String fileName, String contentType, String extension){
        try {
            loggerUtils.log ("File Data" ,  fileData);
            byte[] bI = org.apache.commons.codec.binary.Base64.decodeBase64 ((fileData.substring (fileData.indexOf (",") + 1)).getBytes ());
            InputStream fis = new ByteArrayInputStream (bI);
            AmazonS3 s3 = new AmazonS3Client ();
            Region usWest02 = Region.getRegion (REGION);
            s3.setRegion (usWest02);
            ObjectMetadata metadata = new ObjectMetadata ();
            metadata.setContentLength (bI.length);
             metadata.setContentType ("video/mp4");
            //metadata.setContentType (contentType + "/" + extension.substring (1));
            metadata.setCacheControl ("public, max-age=0");
            s3.putObject (BUCKET_NAME, fileName, fis, metadata);
            s3.setObjectAcl (BUCKET_NAME, fileName, CannedAccessControlList.PublicRead);
            URL s3Url = s3.getUrl(BUCKET_NAME, fileName);
            return  s3Url.toExternalForm();
        }
        catch (Exception exception){
            loggerUtils.log (exception.toString ());
            throw exception;
        }
    }

    public static void main(String[] args) {
        String fileName = "abc1.mp4";
        String fileData = "hkbk";
        new UploadFileService ().uploadFile (fileData, fileName, null, null);
    }
}

但是,如果fileData是使用情况(2MB视频的base64),则出现以下错误:-

Error:(46, 27) java: constant string too long

0 个答案:

没有答案