From 0f6c4a535682765e3a8af5c3e8232f7f39b60346 Mon Sep 17 00:00:00 2001 From: jadyn Date: Wed, 27 Oct 2021 14:52:09 +0800 Subject: [PATCH] Try seek blob stream position to begin --- .../Volo/Abp/BlobStoring/BlobContainer.cs | 21 +++++++++++++++++-- .../MediaDescriptorAppService.cs | 5 ----- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/BlobContainer.cs b/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/BlobContainer.cs index c4d45b840a..443a616d5e 100644 --- a/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/BlobContainer.cs +++ b/framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/BlobContainer.cs @@ -194,14 +194,14 @@ namespace Volo.Abp.BlobStoring var blobNormalizeNaming = BlobNormalizeNamingService.NormalizeNaming(Configuration, ContainerName, name); - return await Provider.GetOrNullAsync( + return TrySeekStreamToBegin(await Provider.GetOrNullAsync( new BlobProviderGetArgs( blobNormalizeNaming.ContainerName, Configuration, blobNormalizeNaming.BlobName, CancellationTokenProvider.FallbackToProvider(cancellationToken) ) - ); + )); } } @@ -214,5 +214,22 @@ namespace Volo.Abp.BlobStoring return CurrentTenant.Id; } + + protected virtual Stream TrySeekStreamToBegin(Stream stream) + { + if (stream == null) + { + return stream; + } + + if (!stream.CanSeek) + { + return stream; + } + + stream.Seek(0, SeekOrigin.Begin); + + return stream; + } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/MediaDescriptors/MediaDescriptorAppService.cs b/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/MediaDescriptors/MediaDescriptorAppService.cs index 501b79e758..99700630e7 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/MediaDescriptors/MediaDescriptorAppService.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Common.Application/Volo/CmsKit/MediaDescriptors/MediaDescriptorAppService.cs @@ -24,11 +24,6 @@ namespace Volo.CmsKit.MediaDescriptors var entity = await MediaDescriptorRepository.GetAsync(id); var stream = await MediaContainer.GetAsync(id.ToString()); - if (stream.CanSeek) - { - stream.Position = 0; - } - return new RemoteStreamContent(stream, entity.Name, entity.MimeType); } }