오늘도 개발자 Backend Developer

AWS s3 upload source Tip

1. Content Type

  • 파일명에 따라 ContentType을 설정한다.
ObjectMetadata objMeta = new ObjectMetadata();
objMeta.setContentType(Mimetypes.getInstance().getMimetype(saveFileNm));

2. Content Length

  • byte length를 추가한다.
ObjectMetadata objMeta = new ObjectMetadata();

byte[] bytes = IOUtils.toByteArray(targetIS);
objMeta.setContentLength(bytes.length);

ByteArrayInputStream byteArrayIs = new ByteArrayInputStream(bytes);

PutObjectRequest putObjReq = new PutObjectRequest(bucketName, key, byteArrayIs, objMeta);
s3client.putObject(putObjReq);
  • 해당 소스처리를 안할 경우 아래와 같은 warning 메시지가 뜬다.

[WARN ] c.a.services.s3.AmazonS3Client:1714 - No content length specified for stream data. Stream contents will be buffered in memory and could result in out of memory errors.

3. 임시파일로 업로드

  • 서버 내 파일을 저장하지않고, 바로 S3에 업로드할 때 사용하면 좋다.
File file = File.createTempFile("test", ".txt");
file.deleteOnExit();