# DiLu.Expansion.File **Repository Path**: tianjiarong/DiLu.Expansion.File ## Basic Information - **Project Name**: DiLu.Expansion.File - **Description**: 的卢文件扩展,支持保存本地文件、FTP、minio - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-14 - **Last Updated**: 2025-04-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 的卢文件扩展组件 ## 介绍 的卢文件操作扩展,支持磁盘、FTP、minio ## 使用说明 ### 本地磁盘 (LocalDisk) ``` c# //获取文件流 var fileStream = await SourceFile.BuildGetLocalDiskFileConfig(SourceRootFolder, null).GetAsync(); var fileStream = await Path.Combine(SourceRootFolder, "", SourceFile).BuildGetLocalDiskFileConfig().GetAsync(); //保存文件后获取保存的相对路径 var fileRelativePath = await fileStream .BuildSaveFileStreamToLocalDiskConfig(TargetFolder, FileGroupName, Path.GetExtension(SourceFile)) .SaveAsync(); Console.WriteLine($"保存的相对路径是:{fileRelativePath}"); //删除文件 await fileRelativePath.BuildDeleteLocalDiskFileConfig(TargetFolder, FileGroupName).DeleteAsync(); await fileFullPath.BuildDeleteLocalDiskFileConfig().DeleteAsync(); //删除文件夹 await directoryFullPath.BuildDeleteLocalDiskFolderConfig().DeleteAsync(); await rootDirectory.BuildDeleteLocalDiskFolderConfig(FileGroupName, "2025/03/28").DeleteAsync(); //查询文件列表 await foreach (var fileInfo in rootDirectory.BuildSearchLocalDiskFileConfig(FileGroupName, null, SearchOption.AllDirectories).SearchAsync()) { Console.WriteLine($"{fileInfo.FileName}-----{fileInfo.Extension}---{fileInfo.DirectoryName}"); await Task.Delay(0); } await foreach (var fileInfo in fileFullPath.BuildSearchLocalDiskFileConfig().SearchAsync()) { Console.WriteLine($"{fileInfo.FileName}-----{fileInfo.Extension}---{fileInfo.DirectoryName}"); await Task.Delay(0); } ``` ### FTP服务器 (FTP) ``` c# //创建客户端 var ftpClient = new AsyncFtpClient(FtpHost, FtpUser, FtpPassword, FtpPort); //获取文件流 var fileStream2 = await "2025/04/09/2025040920151015849.jpg" .BuildGetFtpFileConfig("/", "Test", ftpClient, false).GetAsync(); await using (fileStream2) { Console.WriteLine($"文件大小 {fileStream2?.Length ?? 0}"); } await ftpClient.CloseFtpClientConnectAsync(); //保存文件后获取保存的相对路径 var fileStream = await SourceFile.BuildGetLocalDiskFileConfig(SourceRootFolder, null).GetAsync(); await using (fileStream) { await fileStream .BuildSaveFileStreamToFtpConfig("/", "Images", Path.GetExtension(SourceFile), ftpClient, false) .SaveAsync(); } await ftpClient.CloseFtpClientConnectAsync(); //删除文件 await "2025/04/10/2025041021432585288.jpg" .BuildDeleteFtpFileConfig("/", "Images", ftpClient, false) .DeleteAsync(); await ftpClient.CloseFtpClientConnectAsync(); //删除文件夹 await "/Images/".BuildDeleteFtpFolderConfig(ftpClient, false).DeleteAsync(); await ftpClient.CloseFtpClientConnectAsync(); //查询文件列表 await foreach (var fileInfo in "/".BuildSearchFtpFileConfig(ftpClient, false).SearchAsync()) { Console.WriteLine($"{fileInfo.FileName}-----{fileInfo.Extension}---{fileInfo.DirectoryFullPath}"); await Task.Delay(0); } await ftpClient.CloseFtpClientConnectAsync(); ``` ### Minio (Minio) ``` c# //创建客户端 var minio = new MinioClient() .WithEndpoint(MinioIp, MinioPort) .WithCredentials(MinioAccessKey, MinioSecretKey) .Build(); //获取文件流 var fileStream1 = await "2025/04/12/2025041221122784472.jpg" .BuildGetMinioFileConfig("/", "照片", minio, MinioBucketName).GetAsync(); //保存文件后获取保存的相对路径 await fileStream .BuildSaveFileStreamToMinioConfig("/", "照片2", Path.GetExtension(SourceFile), minio, MinioBucketName) .SaveAsync(); //删除文件 await "2025/04/12/2025041221122784472.jpg" .BuildDeleteMinioFileConfig("/", "照片", minio, MinioBucketName) .DeleteAsync(); //查询文件列表 await foreach (var fileInfo in "/" .BuildSearchMinioFileConfig("照片2", null, minio, MinioBucketName, SearchOption.AllDirectories, @"^([\s\S]*)123([\s\S]*)(\.\w+)$") .SearchAsync()) { Console.WriteLine($"{fileInfo.FileName}-----{fileInfo.Extension}---{fileInfo.DirectoryFullPath}-----{fileInfo.MimeType}"); await Task.Delay(0); } ```