Copy stream and seek stream position to start

pull/10445/head
jadyn 4 years ago
parent 8fbb765dba
commit c8e63168ab

@ -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)

@ -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);
}
}

@ -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)

@ -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);
}
});
}

@ -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)

@ -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;
}
}
}

@ -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