diff --git a/src/BootstrapBlazor/BootstrapBlazor.csproj b/src/BootstrapBlazor/BootstrapBlazor.csproj index fe22a1d38f1..85c7bdfde20 100644 --- a/src/BootstrapBlazor/BootstrapBlazor.csproj +++ b/src/BootstrapBlazor/BootstrapBlazor.csproj @@ -1,7 +1,7 @@ - 8.10.3-beta03 + 8.10.3 diff --git a/src/BootstrapBlazor/Services/DefaultZipArchiveService.cs b/src/BootstrapBlazor/Services/DefaultZipArchiveService.cs index 0058dc51c98..1df0aecd191 100644 --- a/src/BootstrapBlazor/Services/DefaultZipArchiveService.cs +++ b/src/BootstrapBlazor/Services/DefaultZipArchiveService.cs @@ -71,6 +71,11 @@ public async Task ArchiveDirectory(string archiveFileName, string directoryName, { if (Directory.Exists(directoryName)) { + var folder = Path.GetDirectoryName(archiveFileName); + if (!string.IsNullOrEmpty(folder) && !Directory.Exists(folder)) + { + Directory.CreateDirectory(folder); + } await Task.Run(() => ZipFile.CreateFromDirectory(directoryName, archiveFileName, compressionLevel, includeBaseDirectory, encoding)); } } diff --git a/test/UnitTest/Services/ZipArchiveServiceTest.cs b/test/UnitTest/Services/ZipArchiveServiceTest.cs index e539ccba911..f05b25ee39d 100644 --- a/test/UnitTest/Services/ZipArchiveServiceTest.cs +++ b/test/UnitTest/Services/ZipArchiveServiceTest.cs @@ -50,11 +50,13 @@ public async Task Archive_Ok() archService.ExtractToDirectory(archiveFile, destFolder); Assert.True(Directory.Exists(destFolder)); - // 打包文件夹 - //stream = await archService.ArchiveDirectory(destFolder); - //Assert.NotNull(stream); - - var destFile = Path.Combine(root, "folder.zip"); + // 打包文件夹单元测试 + var tempFolder = Path.Combine(root, "test_temp"); + if (Directory.Exists(tempFolder)) + { + Directory.Delete(tempFolder, true); + } + var destFile = Path.Combine(tempFolder, "folder.zip"); if (File.Exists(destFile)) { File.Delete(destFile); @@ -62,5 +64,7 @@ public async Task Archive_Ok() await archService.ArchiveDirectory(destFile, destFolder, includeBaseDirectory: true); Assert.True(File.Exists(destFile)); File.Delete(destFile); + + await Assert.ThrowsAsync(() => archService.ArchiveDirectory(null!, destFolder, includeBaseDirectory: true)); } }