diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AliyunOssContainer.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AliyunOssContainer.cs index d352ed143..3e539a90b 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AliyunOssContainer.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.Aliyun/LINGYUN/Abp/OssManagement/Aliyun/AliyunOssContainer.cs @@ -228,10 +228,7 @@ namespace LINGYUN.Abp.OssManagement.Aliyun if (aliyunOssObject.IsSetResponseStream()) { - var memoryStream = new MemoryStream(); - await aliyunOssObject.Content.CopyToAsync(memoryStream); - memoryStream.Seek(0, SeekOrigin.Begin); - ossObject.SetContent(memoryStream); + ossObject.SetContent(aliyunOssObject.Content); } return ossObject; diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj index e0965d55f..57eee08c8 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp.csproj @@ -1,4 +1,4 @@ - + @@ -9,7 +9,7 @@ - + diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs index ab5573f29..a3d988eaf 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem.ImageSharp/LINGYUN/Abp/OssManagement/FileSystem/ImageSharp/ImageSharpFileSystemOssObjectProcesser.cs @@ -24,21 +24,25 @@ namespace LINGYUN.Abp.OssManagement.FileSystem.ImageSharp public virtual async Task ProcessAsync(FileSystemOssObjectContext context) { - var bytes = await context.OssObject.Content.GetAllBytesAsync(); - - if (IsImage(bytes)) - { - var args = context.Process.Split(','); - if (DrawGraphics(bytes, args, out Stream content)) - { - context.SetContent(content); - } + var copyStream = context.OssObject.Content; + var bytes = await copyStream.GetAllBytesAsync(); + + if (IsImage(bytes)) + { + var args = context.Process.Split(','); + if (DrawGraphics(bytes, args, out var content)) + { + context.SetContent(content); + + // 释放原图形流数据 + await copyStream.DisposeAsync(); + } } } protected virtual bool DrawGraphics(byte[] fileBytes, string[] args, out Stream content) { - using var image = Image.Load(fileBytes, out IImageFormat format); + using var image = Image.Load(fileBytes, out var format); // 大小 var width = GetInt32Prarm(args, "w_"); diff --git a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainer.cs b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainer.cs index d55183058..4be7384e2 100644 --- a/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainer.cs +++ b/aspnet-core/modules/oss-management/LINGYUN.Abp.OssManagement.FileSystem/LINGYUN/Abp/OssManagement/FileSystem/FileSystemOssContainer.cs @@ -293,9 +293,8 @@ namespace LINGYUN.Abp.OssManagement.FileSystem else { var fileInfo = new FileInfo(filePath); - using (var fileStream = File.OpenRead(filePath)) - { - var ossObject = new OssObject( + var fileStream = File.OpenRead(filePath); + var ossObject = new OssObject( fileInfo.Name, objectPath, request.MD5 ? fileStream.MD5() : "", @@ -307,32 +306,29 @@ namespace LINGYUN.Abp.OssManagement.FileSystem { "IsReadOnly", fileInfo.IsReadOnly.ToString() }, { "LastAccessTime", fileInfo.LastAccessTime.ToString("yyyy-MM-dd HH:mm:ss") } }) - { - FullName = fileInfo.FullName.Replace(Environment.ContentRootPath, "") - }; + { + FullName = fileInfo.FullName.Replace(Environment.ContentRootPath, "") + }; - var memoryStream = new MemoryStream(); - await fileStream.CopyToAsync(memoryStream); - ossObject.SetContent(memoryStream); + ossObject.SetContent(fileStream); - if (!request.Process.IsNullOrWhiteSpace()) + if (!request.Process.IsNullOrWhiteSpace()) + { + using var serviceScope = ServiceProvider.CreateScope(); + var context = new FileSystemOssObjectContext(request.Process, ossObject, serviceScope.ServiceProvider); + foreach (var processer in Options.Processers) { - using var serviceScope = ServiceProvider.CreateScope(); - var context = new FileSystemOssObjectContext(request.Process, ossObject, serviceScope.ServiceProvider); - foreach (var processer in Options.Processers) - { - await processer.ProcessAsync(context); + await processer.ProcessAsync(context); - if (context.Handled) - { - ossObject.SetContent(context.Content); - break; - } + if (context.Handled) + { + ossObject.SetContent(context.Content); + break; } } - - return ossObject; } + + return ossObject; } }