Skip to content

Commit 0414eda

Browse files
committed
asp extensions
1 parent b52e76f commit 0414eda

File tree

5 files changed

+46
-8
lines changed

5 files changed

+46
-8
lines changed

Directory.Build.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
<PackageLicenseExpression>MIT</PackageLicenseExpression>
1515
<PackageReadmeFile>README.md</PackageReadmeFile>
1616
<Product>Managed Code - Storage</Product>
17-
<Version>2.1.2</Version>
18-
<PackageVersion>2.1.2</PackageVersion>
17+
<Version>2.1.3</Version>
18+
<PackageVersion>2.1.3</PackageVersion>
1919
</PropertyGroup>
2020
<PropertyGroup Condition="'$(GITHUB_ACTIONS)' == 'true'">
2121
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>

ManagedCode.Storage.AspNetExtensions/FormFileExtensions.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,8 @@ public static class FormFileExtensions
1212
{
1313
public static async Task<LocalFile> ToLocalFileAsync(this IFormFile formFile, CancellationToken cancellationToken = default)
1414
{
15-
var tempPath = Path.GetTempPath();
16-
LocalFile localFile = new($"{tempPath}/{formFile.FileName}");
17-
15+
LocalFile localFile = LocalFile.FromFileName(formFile.FileName);
1816
await formFile.CopyToAsync(localFile.FileStream, cancellationToken);
19-
2017
return localFile;
2118
}
2219

ManagedCode.Storage.AspNetExtensions/StorageExtensions.cs

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
using System;
12
using System.Collections.Generic;
23
using System.Runtime.CompilerServices;
34
using System.Threading;
@@ -28,7 +29,27 @@ public static async Task<Result<BlobMetadata>> UploadToStorageAsync(this IStorag
2829
return await storage.UploadAsync(localFile.FileInfo, options, cancellationToken);
2930
}
3031

31-
using (var stream = formFile.OpenReadStream())
32+
await using (var stream = formFile.OpenReadStream())
33+
{
34+
return await storage.UploadAsync(stream, options, cancellationToken);
35+
}
36+
}
37+
38+
public static async Task<Result<BlobMetadata>> UploadToStorageAsync(this IStorage storage,
39+
IFormFile formFile,
40+
Action<UploadOptions> options,
41+
CancellationToken cancellationToken = default)
42+
{
43+
var newOptions = new UploadOptions(formFile.FileName, mimeType: formFile.ContentType);
44+
options.Invoke(newOptions);
45+
46+
if (formFile.Length > MinLengthForLargeFile)
47+
{
48+
var localFile = await formFile.ToLocalFileAsync(cancellationToken);
49+
return await storage.UploadAsync(localFile.FileInfo, options, cancellationToken);
50+
}
51+
52+
await using (var stream = formFile.OpenReadStream())
3253
{
3354
return await storage.UploadAsync(stream, options, cancellationToken);
3455
}
@@ -44,6 +65,17 @@ public static async IAsyncEnumerable<Result<BlobMetadata>> UploadToStorageAsync(
4465
yield return await storage.UploadToStorageAsync(formFile, options, cancellationToken);
4566
}
4667
}
68+
69+
public static async IAsyncEnumerable<Result<BlobMetadata>> UploadToStorageAsync(this IStorage storage,
70+
IFormFileCollection formFiles,
71+
Action<UploadOptions> options,
72+
[EnumeratorCancellation] CancellationToken cancellationToken = default)
73+
{
74+
foreach (var formFile in formFiles)
75+
{
76+
yield return await storage.UploadToStorageAsync(formFile, options, cancellationToken);
77+
}
78+
}
4779

4880
public static async Task<Result<FileResult>> DownloadAsFileResult(this IStorage storage,
4981
string blobName,

ManagedCode.Storage.Core/BaseStorage.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ protected UploadOptions SetUploadOptions(UploadOptions options)
277277
{
278278
if (string.IsNullOrWhiteSpace(options.FileName))
279279
{
280-
options.FileName = $"{Guid.NewGuid():N}";
280+
options.FileName = Guid.NewGuid().ToString("N");
281281
}
282282

283283
if (!string.IsNullOrWhiteSpace(options.FileNamePrefix))

ManagedCode.Storage.Core/Models/LocalFile.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,4 +149,13 @@ public static async Task<LocalFile> FromStreamAsync(Stream stream)
149149

150150
return file;
151151
}
152+
public static LocalFile FromFileName(string fileName)
153+
{
154+
return new LocalFile(Path.Combine(Path.GetTempPath(), fileName));
155+
}
156+
157+
public static LocalFile FromTempFile()
158+
{
159+
return new LocalFile();
160+
}
152161
}

0 commit comments

Comments
 (0)