diff --git a/Oqtane.Client/Modules/Admin/Files/Details.razor b/Oqtane.Client/Modules/Admin/Files/Details.razor
index 56eca8c7..2b707af5 100644
--- a/Oqtane.Client/Modules/Admin/Files/Details.razor
+++ b/Oqtane.Client/Modules/Admin/Files/Details.razor
@@ -40,10 +40,14 @@
+
@SharedLocalizer["Cancel"]
-
-
+ @if (_name.ToLower().EndsWith(".zip"))
+ {
+
+ }
+
}
@@ -126,4 +130,18 @@
AddModuleMessage(SharedLocalizer["Message.InfoRequired"], MessageType.Warning);
}
}
+
+ private async Task UnzipFile()
+ {
+ try
+ {
+ await FileService.UnzipFileAsync(_fileId);
+ NavigationManager.NavigateTo(NavigateUrl());
+ }
+ catch (Exception ex)
+ {
+ await logger.LogError(ex, "Error Unzipping File {FileId} {Error}", _fileId, ex.Message);
+ AddModuleMessage(Localizer["Error.File.Unzip"], MessageType.Error);
+ }
+ }
}
\ No newline at end of file
diff --git a/Oqtane.Client/Services/FileService.cs b/Oqtane.Client/Services/FileService.cs
index 05d3adff..9bc563c6 100644
--- a/Oqtane.Client/Services/FileService.cs
+++ b/Oqtane.Client/Services/FileService.cs
@@ -75,5 +75,10 @@ namespace Oqtane.Services
{
return await GetByteArrayAsync($"{Apiurl}/download/{fileId}");
}
+
+ public async Task UnzipFileAsync(int fileId)
+ {
+ await PutAsync($"{Apiurl}/unzip/{fileId}");
+ }
}
}
diff --git a/Oqtane.Client/Services/Interfaces/IFileService.cs b/Oqtane.Client/Services/Interfaces/IFileService.cs
index 1174947f..451d3c4d 100644
--- a/Oqtane.Client/Services/Interfaces/IFileService.cs
+++ b/Oqtane.Client/Services/Interfaces/IFileService.cs
@@ -92,5 +92,13 @@ namespace Oqtane.Services
///
///
Task> GetFilesAsync(int siteId, string folderPath);
+
+ ///
+ /// Unzips the contents of a zip file
+ ///
+ /// Reference to the
+ ///
+ ///
+ Task UnzipFileAsync(int fileId);
}
}
diff --git a/Oqtane.Client/Services/SettingService.cs b/Oqtane.Client/Services/SettingService.cs
index 5176da7a..4a43972e 100644
--- a/Oqtane.Client/Services/SettingService.cs
+++ b/Oqtane.Client/Services/SettingService.cs
@@ -194,7 +194,7 @@ namespace Oqtane.Services
public async Task AddOrUpdateSettingAsync(string entityName, int entityId, string settingName, string settingValue, bool isPrivate)
{
- await PutJsonAsync