-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathUploadFileToFileSystemStrategy.cs
36 lines (31 loc) · 1.23 KB
/
UploadFileToFileSystemStrategy.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using Microsoft.AspNetCore.Components.Forms;
using Saritasa.NetForge.Domain;
namespace Saritasa.NetForge.Demo.Infrastructure.UploadFiles.Strategies;
/// <summary>
/// Strategy to upload file to file system.
/// </summary>
internal class UploadFileToFileSystemStrategy : IUploadFileStrategy
{
/// <summary>
/// Uploads file to file system.
/// </summary>
/// <param name="file">File to upload.</param>
/// <param name="cancellationToken">Token to cancel the operation.</param>
/// <returns>Relative path to uploaded file.</returns>
public async Task<object> UploadFileAsync(IBrowserFile file, CancellationToken cancellationToken)
{
var path = Path.Combine("media", file.Name);
var pathToCreate = Path.Combine("wwwroot", path);
Directory.CreateDirectory(Path.GetDirectoryName(pathToCreate)!);
await using var fileStream = File.Create(pathToCreate);
await file.OpenReadStream(cancellationToken: cancellationToken).CopyToAsync(fileStream, cancellationToken);
return path;
}
/// <summary>
/// Returns path to file as <paramref name="fileString"/> as it is.
/// </summary>
public string GetFileSource(string fileString)
{
return fileString;
}
}