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;
}
var result = ossClient.GetObject(containerName, blobName);
var memoryStream = new MemoryStream();
await result.Content.CopyToAsync(memoryStream);
return memoryStream;
return await TryCopyToMemoryStreamAsync(result.Content, args.CancellationToken);
}
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
});
var memoryStream = new MemoryStream();
await response.ResponseStream.CopyToAsync(memoryStream);
return memoryStream;
return await TryCopyToMemoryStreamAsync(response.ResponseStream, args.CancellationToken);
}
}

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 download = await blobClient.DownloadAsync();
var memoryStream = new MemoryStream();
await download.Value.Content.CopyToAsync(memoryStream);
return memoryStream;
return await TryCopyToMemoryStreamAsync(download.Value.Content, args.CancellationToken);
}
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))
{
var memoryStream = new MemoryStream();
await fileStream.CopyToAsync(memoryStream, args.CancellationToken);
return memoryStream;
return await TryCopyToMemoryStreamAsync(fileStream, args.CancellationToken);
}
});
}

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

@ -75,20 +75,13 @@ namespace Volo.Abp.BlobStoring.Minio
return null;
}
var memoryStream = new MemoryStream();
Stream blobStream = null;
await client.GetObjectAsync(containerName, blobName, (stream) =>
{
if (stream != null)
{
stream.CopyTo(memoryStream);
}
else
{
memoryStream = null;
}
blobStream = stream;
});
return memoryStream;
return await TryCopyToMemoryStreamAsync(blobStream, args.CancellationToken);
}
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 =
BlobNormalizeNamingService.NormalizeNaming(Configuration, ContainerName, name);
return TrySeekStreamToBegin(await Provider.GetOrNullAsync(
return await Provider.GetOrNullAsync(
new BlobProviderGetArgs(
blobNormalizeNaming.ContainerName,
Configuration,
blobNormalizeNaming.BlobName,
CancellationTokenProvider.FallbackToProvider(cancellationToken)
)
));
);
}
}
@ -214,14 +214,5 @@ namespace Volo.Abp.BlobStoring
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.Threading;
using System.Threading.Tasks;
namespace Volo.Abp.BlobStoring
@ -12,5 +13,18 @@ namespace Volo.Abp.BlobStoring
public abstract Task<bool> ExistsAsync(BlobProviderExistsArgs 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