You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: sdk/src/Services/S3/Custom/Transfer/_async/ITransferUtility.async.cs
+84-2Lines changed: 84 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -343,6 +343,26 @@ public partial interface ITransferUtility : IDisposable
343
343
/// <item><description>Downloaded parts are written directly to the file as they arrive</description></item>
344
344
/// </list>
345
345
/// <para>
346
+
/// <b>Multipart Download Strategy:</b>
347
+
/// </para>
348
+
/// <para>
349
+
/// The <see cref="BaseDownloadRequest.MultipartDownloadType"/> property controls how parts are downloaded (default: <c>MultipartDownloadType.PART</c>):
350
+
/// </para>
351
+
/// <list type="bullet">
352
+
/// <item><description><b>PART (default)</b>: Uses the original part boundaries from when the object was uploaded with multipart upload.
353
+
/// This is more efficient as it aligns with S3's internal part structure, but <b>requires that the object was uploaded using multipart upload</b>.
354
+
/// The <see cref="BaseDownloadRequest.PartSize"/> property is ignored in this mode.</description></item>
355
+
/// <item><description><b>RANGE</b>: Uses range-based downloads with configurable part sizes via the <see cref="BaseDownloadRequest.PartSize"/> property.
356
+
/// This works with any object (whether uploaded as single-part or multipart) and provides more flexibility in controlling download part sizes.</description></item>
357
+
/// </list>
358
+
/// <para>
359
+
/// <b>When to use PART vs RANGE:</b>
360
+
/// </para>
361
+
/// <list type="bullet">
362
+
/// <item><description>Use <b>PART</b> mode (default) when you know the object was uploaded using multipart upload and want optimal performance.</description></item>
363
+
/// <item><description>Use <b>RANGE</b> mode when the object's upload method is unknown, when you need specific part sizes, or when downloading objects that were uploaded as a single part.</description></item>
364
+
/// </list>
365
+
/// <para>
346
366
/// <b>Configuration Options:</b>
347
367
/// </para>
348
368
/// <para>
@@ -393,6 +413,26 @@ public partial interface ITransferUtility : IDisposable
393
413
/// <item><description>Downloaded parts are written directly to the file as they arrive</description></item>
394
414
/// </list>
395
415
/// <para>
416
+
/// <b>Multipart Download Strategy:</b>
417
+
/// </para>
418
+
/// <para>
419
+
/// The <see cref="BaseDownloadRequest.MultipartDownloadType"/> property controls how parts are downloaded (default: <c>MultipartDownloadType.PART</c>):
420
+
/// </para>
421
+
/// <list type="bullet">
422
+
/// <item><description><b>PART (default)</b>: Uses the original part boundaries from when the object was uploaded with multipart upload.
423
+
/// This is more efficient as it aligns with S3's internal part structure, but <b>requires that the object was uploaded using multipart upload</b>.
424
+
/// The <see cref="BaseDownloadRequest.PartSize"/> property is ignored in this mode.</description></item>
425
+
/// <item><description><b>RANGE</b>: Uses range-based downloads with configurable part sizes via the <see cref="BaseDownloadRequest.PartSize"/> property.
426
+
/// This works with any object (whether uploaded as single-part or multipart) and provides more flexibility in controlling download part sizes.</description></item>
427
+
/// </list>
428
+
/// <para>
429
+
/// <b>When to use PART vs RANGE:</b>
430
+
/// </para>
431
+
/// <list type="bullet">
432
+
/// <item><description>Use <b>PART</b> mode (default) when you know the object was uploaded using multipart upload and want optimal performance.</description></item>
433
+
/// <item><description>Use <b>RANGE</b> mode when the object's upload method is unknown, when you need specific part sizes, or when downloading objects that were uploaded as a single part.</description></item>
434
+
/// </list>
435
+
/// <para>
396
436
/// <b>Configuration Options:</b>
397
437
/// </para>
398
438
/// <para>
@@ -418,7 +458,8 @@ public partial interface ITransferUtility : IDisposable
418
458
/// BucketName = "my-bucket",
419
459
/// Key = "my-key",
420
460
/// FilePath = "local-file.txt",
421
-
/// PartSize = 16 * 1024 * 1024 // Use 16MB parts instead of default 8MB
461
+
/// PartSize = 16 * 1024 * 1024, // Use 16MB parts instead of default 8MB
462
+
/// MultipartDownloadType = MultipartDownloadType.RANGE // Enable RANGE mode to use custom PartSize
422
463
/// };
423
464
/// var response = await transferUtility.DownloadWithResponseAsync(request);
424
465
/// </code>
@@ -534,6 +575,26 @@ public partial interface ITransferUtility : IDisposable
534
575
/// <item><description>Downloaded parts are buffered in memory and served to your application as you read from the stream</description></item>
535
576
/// </list>
536
577
/// <para>
578
+
/// <b>Multipart Download Strategy:</b>
579
+
/// </para>
580
+
/// <para>
581
+
/// The <see cref="BaseDownloadRequest.MultipartDownloadType"/> property controls how parts are downloaded (default: <c>MultipartDownloadType.PART</c>):
582
+
/// </para>
583
+
/// <list type="bullet">
584
+
/// <item><description><b>PART (default)</b>: Uses the original part boundaries from when the object was uploaded with multipart upload.
585
+
/// This is more efficient as it aligns with S3's internal part structure, but <b>requires that the object was uploaded using multipart upload</b>.
586
+
/// The <see cref="BaseDownloadRequest.PartSize"/> property is ignored in this mode.</description></item>
587
+
/// <item><description><b>RANGE</b>: Uses range-based downloads with configurable part sizes via the <see cref="BaseDownloadRequest.PartSize"/> property.
588
+
/// This works with any object (whether uploaded as single-part or multipart) and provides more flexibility in controlling download part sizes.</description></item>
589
+
/// </list>
590
+
/// <para>
591
+
/// <b>When to use PART vs RANGE:</b>
592
+
/// </para>
593
+
/// <list type="bullet">
594
+
/// <item><description>Use <b>PART</b> mode (default) when you know the object was uploaded using multipart upload and want optimal performance.</description></item>
595
+
/// <item><description>Use <b>RANGE</b> mode when the object's upload method is unknown, when you need specific part sizes, or when downloading objects that were uploaded as a single part.</description></item>
596
+
/// </list>
597
+
/// <para>
537
598
/// <b>Configuration Options:</b>
538
599
/// </para>
539
600
/// <para>
@@ -589,6 +650,26 @@ public partial interface ITransferUtility : IDisposable
589
650
/// <item><description>Downloaded parts are buffered in memory and served to your application as you read from the stream</description></item>
590
651
/// </list>
591
652
/// <para>
653
+
/// <b>Multipart Download Strategy:</b>
654
+
/// </para>
655
+
/// <para>
656
+
/// The <see cref="BaseDownloadRequest.MultipartDownloadType"/> property controls how parts are downloaded (default: <c>MultipartDownloadType.PART</c>):
657
+
/// </para>
658
+
/// <list type="bullet">
659
+
/// <item><description><b>PART (default)</b>: Uses the original part boundaries from when the object was uploaded with multipart upload.
660
+
/// This is more efficient as it aligns with S3's internal part structure, but <b>requires that the object was uploaded using multipart upload</b>.
661
+
/// The <see cref="BaseDownloadRequest.PartSize"/> property is ignored in this mode.</description></item>
662
+
/// <item><description><b>RANGE</b>: Uses range-based downloads with configurable part sizes via the <see cref="BaseDownloadRequest.PartSize"/> property.
663
+
/// This works with any object (whether uploaded as single-part or multipart) and provides more flexibility in controlling download part sizes.</description></item>
664
+
/// </list>
665
+
/// <para>
666
+
/// <b>When to use PART vs RANGE:</b>
667
+
/// </para>
668
+
/// <list type="bullet">
669
+
/// <item><description>Use <b>PART</b> mode (default) when you know the object was uploaded using multipart upload and want optimal performance.</description></item>
670
+
/// <item><description>Use <b>RANGE</b> mode when the object's upload method is unknown, when you need specific part sizes, or when downloading objects that were uploaded as a single part.</description></item>
671
+
/// </list>
672
+
/// <para>
592
673
/// <b>Configuration Options:</b>
593
674
/// </para>
594
675
/// <para>
@@ -615,7 +696,8 @@ public partial interface ITransferUtility : IDisposable
615
696
/// {
616
697
/// BucketName = "my-bucket",
617
698
/// Key = "my-key",
618
-
/// PartSize = 16 * 1024 * 1024 // Use 16MB parts instead of default 8MB
699
+
/// PartSize = 16 * 1024 * 1024, // Use 16MB parts instead of default 8MB
700
+
/// MultipartDownloadType = MultipartDownloadType.RANGE // Enable RANGE mode to use custom PartSize
619
701
/// };
620
702
/// var response = await transferUtility.OpenStreamWithResponseAsync(request);
Copy file name to clipboardExpand all lines: sdk/src/Services/S3/Custom/Transfer/_bcl+netstandard/ITransferUtility.sync.cs
+84-2Lines changed: 84 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -360,6 +360,26 @@ public partial interface ITransferUtility
360
360
/// <item><description>Downloaded parts are buffered in memory and served to your application as you read from the stream</description></item>
361
361
/// </list>
362
362
/// <para>
363
+
/// <b>Multipart Download Strategy:</b>
364
+
/// </para>
365
+
/// <para>
366
+
/// The <see cref="BaseDownloadRequest.MultipartDownloadType"/> property controls how parts are downloaded (default: <c>MultipartDownloadType.PART</c>):
367
+
/// </para>
368
+
/// <list type="bullet">
369
+
/// <item><description><b>PART (default)</b>: Uses the original part boundaries from when the object was uploaded with multipart upload.
370
+
/// This is more efficient as it aligns with S3's internal part structure, but <b>requires that the object was uploaded using multipart upload</b>.
371
+
/// The <see cref="BaseDownloadRequest.PartSize"/> property is ignored in this mode.</description></item>
372
+
/// <item><description><b>RANGE</b>: Uses range-based downloads with configurable part sizes via the <see cref="BaseDownloadRequest.PartSize"/> property.
373
+
/// This works with any object (whether uploaded as single-part or multipart) and provides more flexibility in controlling download part sizes.</description></item>
374
+
/// </list>
375
+
/// <para>
376
+
/// <b>When to use PART vs RANGE:</b>
377
+
/// </para>
378
+
/// <list type="bullet">
379
+
/// <item><description>Use <b>PART</b> mode (default) when you know the object was uploaded using multipart upload and want optimal performance.</description></item>
380
+
/// <item><description>Use <b>RANGE</b> mode when the object's upload method is unknown, when you need specific part sizes, or when downloading objects that were uploaded as a single part.</description></item>
381
+
/// </list>
382
+
/// <para>
363
383
/// <b>Configuration Options:</b>
364
384
/// </para>
365
385
/// <para>
@@ -414,6 +434,26 @@ public partial interface ITransferUtility
414
434
/// <item><description>Downloaded parts are buffered in memory and served to your application as you read from the stream</description></item>
415
435
/// </list>
416
436
/// <para>
437
+
/// <b>Multipart Download Strategy:</b>
438
+
/// </para>
439
+
/// <para>
440
+
/// The <see cref="BaseDownloadRequest.MultipartDownloadType"/> property controls how parts are downloaded (default: <c>MultipartDownloadType.PART</c>):
441
+
/// </para>
442
+
/// <list type="bullet">
443
+
/// <item><description><b>PART (default)</b>: Uses the original part boundaries from when the object was uploaded with multipart upload.
444
+
/// This is more efficient as it aligns with S3's internal part structure, but <b>requires that the object was uploaded using multipart upload</b>.
445
+
/// The <see cref="BaseDownloadRequest.PartSize"/> property is ignored in this mode.</description></item>
446
+
/// <item><description><b>RANGE</b>: Uses range-based downloads with configurable part sizes via the <see cref="BaseDownloadRequest.PartSize"/> property.
447
+
/// This works with any object (whether uploaded as single-part or multipart) and provides more flexibility in controlling download part sizes.</description></item>
448
+
/// </list>
449
+
/// <para>
450
+
/// <b>When to use PART vs RANGE:</b>
451
+
/// </para>
452
+
/// <list type="bullet">
453
+
/// <item><description>Use <b>PART</b> mode (default) when you know the object was uploaded using multipart upload and want optimal performance.</description></item>
454
+
/// <item><description>Use <b>RANGE</b> mode when the object's upload method is unknown, when you need specific part sizes, or when downloading objects that were uploaded as a single part.</description></item>
455
+
/// </list>
456
+
/// <para>
417
457
/// <b>Configuration Options:</b>
418
458
/// </para>
419
459
/// <para>
@@ -440,7 +480,8 @@ public partial interface ITransferUtility
440
480
/// {
441
481
/// BucketName = "my-bucket",
442
482
/// Key = "my-key",
443
-
/// PartSize = 16 * 1024 * 1024 // Use 16MB parts instead of default 8MB
483
+
/// PartSize = 16 * 1024 * 1024, // Use 16MB parts instead of default 8MB
484
+
/// MultipartDownloadType = MultipartDownloadType.RANGE // Enable RANGE mode to use custom PartSize
444
485
/// };
445
486
/// var response = transferUtility.OpenStreamWithResponse(request);
446
487
/// </code>
@@ -516,6 +557,26 @@ public partial interface ITransferUtility
516
557
/// <item><description>Downloaded parts are written directly to the file as they arrive</description></item>
517
558
/// </list>
518
559
/// <para>
560
+
/// <b>Multipart Download Strategy:</b>
561
+
/// </para>
562
+
/// <para>
563
+
/// The <see cref="BaseDownloadRequest.MultipartDownloadType"/> property controls how parts are downloaded (default: <c>MultipartDownloadType.PART</c>):
564
+
/// </para>
565
+
/// <list type="bullet">
566
+
/// <item><description><b>PART (default)</b>: Uses the original part boundaries from when the object was uploaded with multipart upload.
567
+
/// This is more efficient as it aligns with S3's internal part structure, but <b>requires that the object was uploaded using multipart upload</b>.
568
+
/// The <see cref="BaseDownloadRequest.PartSize"/> property is ignored in this mode.</description></item>
569
+
/// <item><description><b>RANGE</b>: Uses range-based downloads with configurable part sizes via the <see cref="BaseDownloadRequest.PartSize"/> property.
570
+
/// This works with any object (whether uploaded as single-part or multipart) and provides more flexibility in controlling download part sizes.</description></item>
571
+
/// </list>
572
+
/// <para>
573
+
/// <b>When to use PART vs RANGE:</b>
574
+
/// </para>
575
+
/// <list type="bullet">
576
+
/// <item><description>Use <b>PART</b> mode (default) when you know the object was uploaded using multipart upload and want optimal performance.</description></item>
577
+
/// <item><description>Use <b>RANGE</b> mode when the object's upload method is unknown, when you need specific part sizes, or when downloading objects that were uploaded as a single part.</description></item>
578
+
/// </list>
579
+
/// <para>
519
580
/// <b>Configuration Options:</b>
520
581
/// </para>
521
582
/// <para>
@@ -563,6 +624,26 @@ public partial interface ITransferUtility
563
624
/// <item><description>Downloaded parts are written directly to the file as they arrive</description></item>
564
625
/// </list>
565
626
/// <para>
627
+
/// <b>Multipart Download Strategy:</b>
628
+
/// </para>
629
+
/// <para>
630
+
/// The <see cref="BaseDownloadRequest.MultipartDownloadType"/> property controls how parts are downloaded (default: <c>MultipartDownloadType.PART</c>):
631
+
/// </para>
632
+
/// <list type="bullet">
633
+
/// <item><description><b>PART (default)</b>: Uses the original part boundaries from when the object was uploaded with multipart upload.
634
+
/// This is more efficient as it aligns with S3's internal part structure, but <b>requires that the object was uploaded using multipart upload</b>.
635
+
/// The <see cref="BaseDownloadRequest.PartSize"/> property is ignored in this mode.</description></item>
636
+
/// <item><description><b>RANGE</b>: Uses range-based downloads with configurable part sizes via the <see cref="BaseDownloadRequest.PartSize"/> property.
637
+
/// This works with any object (whether uploaded as single-part or multipart) and provides more flexibility in controlling download part sizes.</description></item>
638
+
/// </list>
639
+
/// <para>
640
+
/// <b>When to use PART vs RANGE:</b>
641
+
/// </para>
642
+
/// <list type="bullet">
643
+
/// <item><description>Use <b>PART</b> mode (default) when you know the object was uploaded using multipart upload and want optimal performance.</description></item>
644
+
/// <item><description>Use <b>RANGE</b> mode when the object's upload method is unknown, when you need specific part sizes, or when downloading objects that were uploaded as a single part.</description></item>
645
+
/// </list>
646
+
/// <para>
566
647
/// <b>Configuration Options:</b>
567
648
/// </para>
568
649
/// <para>
@@ -588,7 +669,8 @@ public partial interface ITransferUtility
588
669
/// BucketName = "my-bucket",
589
670
/// Key = "my-key",
590
671
/// FilePath = "local-file.txt",
591
-
/// PartSize = 16 * 1024 * 1024 // Use 16MB parts instead of default 8MB
672
+
/// PartSize = 16 * 1024 * 1024, // Use 16MB parts instead of default 8MB
673
+
/// MultipartDownloadType = MultipartDownloadType.RANGE // Enable RANGE mode to use custom PartSize
592
674
/// };
593
675
/// var response = transferUtility.DownloadWithResponse(request);
0 commit comments