namespace Mizuki.Services; /// /// The service responsible for managing file uploads. /// public class DriveService { /// /// The path to the uploads folder. /// private const string UploadsFolder = "./uploads"; /// /// The drive service. /// public DriveService() { if (!Directory.Exists(UploadsFolder)) Directory.CreateDirectory(UploadsFolder); } /// /// Opens a file by its filename. /// /// Its filename. /// The file's stream. 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); } /// /// Deletes a file by its filename. /// /// Its filename. public void DeleteFileByFilename(string filename) { var actualFilename = Path.GetFileName(filename); var path = Path.Combine(UploadsFolder, actualFilename); if (!File.Exists(path)) return; File.Delete(path); } /// /// Saves a file with the given filename. /// /// The filename. /// The file stream. public void SaveFileByFilename(string filename, Stream fileStream) { var actualFilename = Path.GetFileName(filename); var path = Path.Combine(UploadsFolder, actualFilename); using var writeStream = File.OpenWrite(path); fileStream.CopyTo(writeStream); } }