11package com .genexus .db .driver ;
22
3- import com .genexus .CommonUtil ;
43import software .amazon .awssdk .auth .credentials .*;
54import software .amazon .awssdk .core .ResponseBytes ;
65import software .amazon .awssdk .core .ResponseInputStream ;
2524
2625import java .io .*;
2726import java .net .URI ;
27+ import java .net .URL ;
2828import java .net .URLEncoder ;
2929import java .nio .charset .StandardCharsets ;
3030import java .nio .file .Files ;
@@ -259,26 +259,13 @@ public String upload(String externalFileName, InputStream input, ResourceAccessC
259259 public String get (String externalFileName , ResourceAccessControlList acl , int expirationMinutes ) {
260260 // Send a request to AWS S3 to retrieve the metadata for the specified object to see if
261261 // the object exists and is accessible under the provided credentials and permissions.
262- try {
263- HeadObjectRequest headObjectRequest = HeadObjectRequest .builder ()
264- .bucket (bucket )
265- .key (externalFileName )
266- .build ();
267- client .headObject (headObjectRequest );
268- return getResourceUrl (externalFileName , acl , expirationMinutes );
269- } catch (Exception e ) {
270- int lastIndex = Math .max (externalFileName .lastIndexOf ('/' ), externalFileName .lastIndexOf ('\\' ));
271- String path = lastIndex >= 0 ? externalFileName .substring (0 , lastIndex + 1 ) : "" ;
272- String fileName = lastIndex >= 0 ? externalFileName .substring (lastIndex + 1 ) : externalFileName ;
273- String encodedFileName = CommonUtil .encodeUtf8Once (fileName );
274- String encodedExternalFileName = path + encodedFileName ;
275- HeadObjectRequest headObjectRequest = HeadObjectRequest .builder ()
276- .bucket (bucket )
277- .key (encodedExternalFileName )
278- .build ();
279- client .headObject (headObjectRequest );
280- return getResourceUrl (encodedExternalFileName , acl , expirationMinutes );
281- }
262+ HeadObjectRequest headObjectRequest = HeadObjectRequest .builder ()
263+ .bucket (bucket )
264+ .key (externalFileName )
265+ .build ();
266+ client .headObject (headObjectRequest );
267+
268+ return getResourceUrl (externalFileName , acl , expirationMinutes );
282269 }
283270
284271 private String getResourceUrl (String externalFileName , ResourceAccessControlList acl , int expirationMinutes ) {
@@ -665,7 +652,7 @@ private String getResourceUrlWithACL(String externalFileName, ResourceAccessCont
665652 int lastIndex = Math .max (externalFileName .lastIndexOf ('/' ), externalFileName .lastIndexOf ('\\' ));
666653 String path = externalFileName .substring (0 , lastIndex + 1 );
667654 String fileName = externalFileName .substring (lastIndex + 1 );
668- String encodedFileName = CommonUtil . encodeUtf8Once (fileName );
655+ String encodedFileName = URLEncoder . encode (fileName , StandardCharsets . UTF_8 . toString () );
669656
670657 String url = String .format (
671658 "https://%s.s3.%s.amazonaws.com/%s%s" ,
@@ -676,8 +663,8 @@ private String getResourceUrlWithACL(String externalFileName, ResourceAccessCont
676663 );
677664
678665 return url ;
679- } catch (Exception e ) {
680- logger .error ("Failed to encode resource URL for " + externalFileName , e );
666+ } catch (UnsupportedEncodingException uee ) {
667+ logger .error ("Failed to encode resource URL for " + externalFileName , uee );
681668 return "" ;
682669 }
683670 }
0 commit comments