Browse Source

Copy stream and seek stream position to start

pull/10445/head
jadyn 5 years ago
parent
commit
c8e63168ab
  1. 4
      framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobProvider.cs
  2. 4
      framework/src/Volo.Abp.BlobStoring.Aws/Volo/Abp/BlobStoring/Aws/AwsBlobProvider.cs
  3. 4
      framework/src/Volo.Abp.BlobStoring.Azure/Volo/Abp/BlobStoring/Azure/AzureBlobProvider.cs
  4. 4
      framework/src/Volo.Abp.BlobStoring.FileSystem/Volo/Abp/BlobStoring/FileSystem/FileSystemBlobProvider.cs
  5. 13
      framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProvider.cs
  6. 13
      framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/BlobContainer.cs
  7. 14
      framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/BlobProviderBase.cs

4
framework/src/Volo.Abp.BlobStoring.Aliyun/Volo/Abp/BlobStoring/Aliyun/AliyunBlobProvider.cs

@ -86,9 +86,7 @@ namespace Volo.Abp.BlobStoring.Aliyun
return null; return null;
} }
var result = ossClient.GetObject(containerName, blobName); var result = ossClient.GetObject(containerName, blobName);
var memoryStream = new MemoryStream(); return await TryCopyToMemoryStreamAsync(result.Content, args.CancellationToken);
await result.Content.CopyToAsync(memoryStream);
return memoryStream;
} }
protected virtual string GetContainerName(BlobProviderArgs args) protected virtual string GetContainerName(BlobProviderArgs args)

4
framework/src/Volo.Abp.BlobStoring.Aws/Volo/Abp/BlobStoring/Aws/AwsBlobProvider.cs

@ -103,9 +103,7 @@ namespace Volo.Abp.BlobStoring.Aws
Key = blobName Key = blobName
}); });
var memoryStream = new MemoryStream(); return await TryCopyToMemoryStreamAsync(response.ResponseStream, args.CancellationToken);
await response.ResponseStream.CopyToAsync(memoryStream);
return memoryStream;
} }
} }

4
framework/src/Volo.Abp.BlobStoring.Azure/Volo/Abp/BlobStoring/Azure/AzureBlobProvider.cs

@ -67,9 +67,7 @@ namespace Volo.Abp.BlobStoring.Azure
var blobClient = GetBlobClient(args, blobName); var blobClient = GetBlobClient(args, blobName);
var download = await blobClient.DownloadAsync(); var download = await blobClient.DownloadAsync();
var memoryStream = new MemoryStream(); return await TryCopyToMemoryStreamAsync(download.Value.Content, args.CancellationToken);
await download.Value.Content.CopyToAsync(memoryStream);
return memoryStream;
} }
protected virtual BlobClient GetBlobClient(BlobProviderArgs args, string blobName) protected virtual BlobClient GetBlobClient(BlobProviderArgs args, string blobName)

4
framework/src/Volo.Abp.BlobStoring.FileSystem/Volo/Abp/BlobStoring/FileSystem/FileSystemBlobProvider.cs

@ -74,9 +74,7 @@ namespace Volo.Abp.BlobStoring.FileSystem
{ {
using (var fileStream = File.OpenRead(filePath)) using (var fileStream = File.OpenRead(filePath))
{ {
var memoryStream = new MemoryStream(); return await TryCopyToMemoryStreamAsync(fileStream, args.CancellationToken);
await fileStream.CopyToAsync(memoryStream, args.CancellationToken);
return memoryStream;
} }
}); });
} }

13
framework/src/Volo.Abp.BlobStoring.Minio/Volo/Abp/BlobStoring/Minio/MinioBlobProvider.cs

@ -75,20 +75,13 @@ namespace Volo.Abp.BlobStoring.Minio
return null; return null;
} }
var memoryStream = new MemoryStream(); Stream blobStream = null;
await client.GetObjectAsync(containerName, blobName, (stream) => await client.GetObjectAsync(containerName, blobName, (stream) =>
{ {
if (stream != null) blobStream = stream;
{
stream.CopyTo(memoryStream);
}
else
{
memoryStream = null;
}
}); });
return memoryStream; return await TryCopyToMemoryStreamAsync(blobStream, args.CancellationToken);
} }
protected virtual MinioClient GetMinioClient(BlobProviderArgs args) protected virtual MinioClient GetMinioClient(BlobProviderArgs args)

13
framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/BlobContainer.cs

@ -194,14 +194,14 @@ namespace Volo.Abp.BlobStoring
var blobNormalizeNaming = var blobNormalizeNaming =
BlobNormalizeNamingService.NormalizeNaming(Configuration, ContainerName, name); BlobNormalizeNamingService.NormalizeNaming(Configuration, ContainerName, name);
return TrySeekStreamToBegin(await Provider.GetOrNullAsync( return await Provider.GetOrNullAsync(
new BlobProviderGetArgs( new BlobProviderGetArgs(
blobNormalizeNaming.ContainerName, blobNormalizeNaming.ContainerName,
Configuration, Configuration,
blobNormalizeNaming.BlobName, blobNormalizeNaming.BlobName,
CancellationTokenProvider.FallbackToProvider(cancellationToken) CancellationTokenProvider.FallbackToProvider(cancellationToken)
) )
)); );
} }
} }
@ -214,14 +214,5 @@ namespace Volo.Abp.BlobStoring
return CurrentTenant.Id; return CurrentTenant.Id;
} }
protected virtual Stream TrySeekStreamToBegin(Stream stream)
{
if (stream != null && stream.CanSeek)
{
stream.Seek(0, SeekOrigin.Begin);
}
return stream;
}
} }
} }

14
framework/src/Volo.Abp.BlobStoring/Volo/Abp/BlobStoring/BlobProviderBase.cs

@ -1,4 +1,5 @@
using System.IO; using System.IO;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace Volo.Abp.BlobStoring namespace Volo.Abp.BlobStoring
@ -12,5 +13,18 @@ namespace Volo.Abp.BlobStoring
public abstract Task<bool> ExistsAsync(BlobProviderExistsArgs args); public abstract Task<bool> ExistsAsync(BlobProviderExistsArgs args);
public abstract Task<Stream> GetOrNullAsync(BlobProviderGetArgs args); public abstract Task<Stream> GetOrNullAsync(BlobProviderGetArgs args);
protected virtual async Task<Stream> TryCopyToMemoryStreamAsync(Stream stream, CancellationToken cancellationToken = default)
{
if(stream == null)
{
return null;
}
var memoryStream = new MemoryStream();
await stream.CopyToAsync(memoryStream, cancellationToken);
memoryStream.Seek(0, SeekOrigin.Begin);
return memoryStream;
}
} }
} }

Loading…
Cancel
Save