50 lines
No EOL
1.3 KiB
C#
50 lines
No EOL
1.3 KiB
C#
namespace Mizuki.Services;
|
|
|
|
/// <summary>
|
|
/// The service responsible for managing file uploads.
|
|
/// </summary>
|
|
public class DriveService
|
|
{
|
|
/// <summary>
|
|
/// The path to the uploads folder.
|
|
/// </summary>
|
|
private const string UploadsFolder = "./uploads";
|
|
|
|
/// <summary>
|
|
/// The drive service.
|
|
/// </summary>
|
|
public DriveService()
|
|
{
|
|
if (!Directory.Exists(UploadsFolder))
|
|
Directory.CreateDirectory(UploadsFolder);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Opens a file by its filename.
|
|
/// </summary>
|
|
/// <param name="filename">Its filename.</param>
|
|
/// <returns>The file's stream.</returns>
|
|
public Stream? OpenFileByFilename(string filename)
|
|
{
|
|
var actualFilename = Path.GetFileName(filename);
|
|
var path = Path.Combine(UploadsFolder, actualFilename);
|
|
if (!File.Exists(path))
|
|
return null;
|
|
|
|
return File.OpenRead(path);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Deletes a file by its filename.
|
|
/// </summary>
|
|
/// <param name="filename">Its filename.</param>
|
|
public void DeleteFileByFilename(string filename)
|
|
{
|
|
var actualFilename = Path.GetFileName(filename);
|
|
var path = Path.Combine(UploadsFolder, actualFilename);
|
|
if (!File.Exists(path))
|
|
return;
|
|
|
|
File.Delete(path);
|
|
}
|
|
} |