11package land .oras ;
22
3- import java .io .*;
3+ import java .io .InputStream ;
4+ import java .io .IOException ;
5+ import java .io .BufferedInputStream ;
6+ import java .io .ByteArrayInputStream ;
7+ import java .io .OutputStream ;
48import java .net .URI ;
59import java .nio .file .Files ;
610import java .nio .file .Path ;
913import java .security .MessageDigest ;
1014import java .security .NoSuchAlgorithmException ;
1115import java .util .ArrayList ;
12- import java .util .HashMap ;
1316import java .util .List ;
1417import java .util .Map ;
1518import land .oras .auth .*;
@@ -267,10 +270,10 @@ public Manifest pushArtifact(
267270 try (InputStream is = Files .newInputStream (tempArchive )) {
268271 long size = Files .size (tempArchive );
269272 Layer layer = pushBlobStream (containerRef , is , size )
270- .withMediaType (Const .DEFAULT_BLOB_DIR_MEDIA_TYPE )
273+ .withMediaType (Const .DEFAULT_BLOB_DIR_MEDIA_TYPE ) // Use tar+gzip for directories
271274 .withAnnotations (Map .of (
272- Const .ANNOTATION_TITLE , path .getFileName ().toString (),
273- Const .ANNOTATION_ORAS_UNPACK , "true"
275+ Const .ANNOTATION_TITLE , path .getFileName ().toString (),
276+ Const .ANNOTATION_ORAS_UNPACK , "true"
274277 ));
275278 layers .add (layer );
276279 LOG .info ("Uploaded directory: {}" , layer .getDigest ());
@@ -279,7 +282,16 @@ public Manifest pushArtifact(
279282 } else {
280283 try (InputStream is = Files .newInputStream (path )) {
281284 long size = Files .size (path );
282- Layer layer = pushBlobStream (containerRef , is , size );
285+ // Set mediaType for individual files
286+ String mediaType = Files .probeContentType (path );
287+ if (mediaType == null ) {
288+ mediaType = "application/octet-stream" ;
289+ }
290+ Layer layer = pushBlobStream (containerRef , is , size )
291+ .withMediaType (mediaType )
292+ .withAnnotations (Map .of (
293+ Const .ANNOTATION_TITLE , path .getFileName ().toString ()
294+ ));
283295 layers .add (layer );
284296 LOG .info ("Uploaded: {}" , layer .getDigest ());
285297 }
0 commit comments