diff --git a/DysonNetwork.Sphere/Storage/FileController.cs b/DysonNetwork.Sphere/Storage/FileController.cs index ece44d3..32f14c6 100644 --- a/DysonNetwork.Sphere/Storage/FileController.cs +++ b/DysonNetwork.Sphere/Storage/FileController.cs @@ -17,10 +17,15 @@ public class FileController( ) : ControllerBase { [HttpGet("{id}")] - public async Task OpenFile(string id, [FromQuery] bool original = false) + public async Task OpenFile( + string id, + [FromQuery] bool download = false, + [FromQuery] bool original = false, + [FromQuery] string? overrideMimeType = null + ) { // Support the file extension for client side data recognize - String? fileExtension = null; + string? fileExtension = null; if (id.Contains(".")) { var splitedId = id.Split('.'); @@ -76,11 +81,20 @@ public class FileController( if (MimeTypes.TryGetMimeType(fileExtension, out var mimeType)) headers.Add("Response-Content-Type", mimeType); } + else if (overrideMimeType is not null) + { + headers.Add("Response-Content-Type", overrideMimeType); + } else if (file.MimeType is not null && !file.MimeType!.EndsWith("unknown")) { headers.Add("Response-Content-Type", file.MimeType); } + if (download) + { + headers.Add("Response-Content-Disposition", $"attachment; filename=\"{file.Name}\""); + } + var bucket = dest.Bucket; var openUrl = await client.PresignedGetObjectAsync( new PresignedGetObjectArgs() diff --git a/DysonNetwork.sln.DotSettings.user b/DysonNetwork.sln.DotSettings.user index 7803d12..897f1de 100644 --- a/DysonNetwork.sln.DotSettings.user +++ b/DysonNetwork.sln.DotSettings.user @@ -8,6 +8,7 @@ ForceIncluded ForceIncluded ForceIncluded + ForceIncluded ForceIncluded ForceIncluded ForceIncluded