diff --git a/module-infrastructure/s3/src/main/kotlin/site/yourevents/service/S3Service.kt b/module-infrastructure/s3/src/main/kotlin/site/yourevents/service/S3Service.kt index aedf7e3..d21c407 100644 --- a/module-infrastructure/s3/src/main/kotlin/site/yourevents/service/S3Service.kt +++ b/module-infrastructure/s3/src/main/kotlin/site/yourevents/service/S3Service.kt @@ -7,6 +7,7 @@ import com.amazonaws.services.s3.model.ObjectMetadata import org.springframework.beans.factory.annotation.Value import org.springframework.stereotype.Service import site.yourevents.s3.port.out.PreSignedUrlPort +import java.net.URI import java.net.URL import java.util.Date import java.util.UUID @@ -20,12 +21,13 @@ class S3Service( ) : PreSignedUrlPort { override fun uploadQrCode(invitationId: UUID, invitationTitle: String, qrCodeBytes: ByteArray): String { - val path = "qr/$invitationId/$invitationTitle" + val path = "qr/$invitationId/$invitationTitle.png" val inputStream = qrCodeBytes.inputStream() val metadata = ObjectMetadata().apply { - this.contentType = "image/png" - this.contentLength = qrCodeBytes.size.toLong() - this.contentDisposition = "attachment; filename=\"$invitationTitle.png\"" + contentType = "image/png" + contentLength = qrCodeBytes.size.toLong() + contentDisposition = + "attachment; filename=\"${URI(null, null, invitationTitle, null).toASCIIString()}.png\"" } amazonS3.putObject(bucketName, path, inputStream, metadata) @@ -33,7 +35,7 @@ class S3Service( } override fun getPreSignedUrl(imageName: String): String { - val fileName = String.format("thumbnail/%S", UUID.randomUUID().toString() + imageName) + val fileName = "thumbnail/${UUID.randomUUID()}-$imageName" val getGeneratePresignedUrlRequest = getGeneratePreSignedUrlRequest(bucketName, fileName) val preSignedUrl: URL = amazonS3.generatePresignedUrl(getGeneratePresignedUrlRequest) @@ -43,12 +45,5 @@ class S3Service( private fun getGeneratePreSignedUrlRequest(bucket: String, fileName: String): GeneratePresignedUrlRequest = GeneratePresignedUrlRequest(bucket, fileName) .withMethod(HttpMethod.PUT) - .withExpiration(getPreSignedUrlExpiration()) - - private fun getPreSignedUrlExpiration(): Date { - val expiration = Date() - val expTimeMillis = expiration.time + (1000 * 60 * 2) - expiration.time = expTimeMillis - return expiration - } + .withExpiration(Date(System.currentTimeMillis() + (1000 * 60 * 2))) }