Skip to content

Commit 7596cc2

Browse files
committed
Fixing the extraction of zip files.
1 parent 163e78a commit 7596cc2

File tree

3 files changed

+27
-20
lines changed

3 files changed

+27
-20
lines changed

eFormAPI/eFormAPI/Controllers/TemplateFilesController.cs

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using System;
22
using System.Drawing;
33
using System.IO;
4-
using System.IO.Compression;
54
using System.Net;
65
using System.Net.Http;
76
using System.Net.Http.Headers;
@@ -12,6 +11,7 @@
1211
using eFormApi.BasePn.Infrastructure.Helpers;
1312
using eFormApi.BasePn.Infrastructure.Messages;
1413
using eFormApi.BasePn.Infrastructure.Models.API;
14+
using Ionic.Zip;
1515

1616
namespace eFormAPI.Web.Controllers
1717
{
@@ -237,14 +237,11 @@ public HttpResponseMessage UploadEformZip()
237237
{
238238
return Request.CreateResponse(HttpStatusCode.BadRequest, "Folder error");
239239
}
240-
if (!Directory.Exists(saveFolder))
241-
{
242-
Directory.CreateDirectory(saveFolder);
243-
}
244-
if (!Directory.Exists(zipArchiveFolder))
245-
{
246-
Directory.CreateDirectory(zipArchiveFolder);
247-
}
240+
241+
Directory.CreateDirectory(saveFolder);
242+
243+
Directory.CreateDirectory(zipArchiveFolder);
244+
248245
var files = HttpContext.Current.Request.Files;
249246
if (files.Count > 0)
250247
{
@@ -253,22 +250,26 @@ public HttpResponseMessage UploadEformZip()
253250
{
254251
var filePath = Path.Combine(zipArchiveFolder, Path.GetFileName(httpPostedFile.FileName));
255252
var extractPath = Path.Combine(saveFolder);
256-
if (!File.Exists(filePath))
253+
if (File.Exists(filePath))
257254
{
258-
httpPostedFile.SaveAs(filePath);
255+
File.Delete(filePath);
259256
}
257+
httpPostedFile.SaveAs(filePath);
260258
if (File.Exists(filePath))
261259
{
262-
if (!Directory.Exists(extractPath))
263-
{
264-
Directory.CreateDirectory(extractPath);
265-
}
266-
else
260+
Directory.CreateDirectory(extractPath);
261+
FoldersHelper.ClearFolder(extractPath);
262+
263+
using (var zip = ZipFile.Read(filePath))
267264
{
268-
FoldersHelper.ClearFolder(extractPath);
265+
foreach (var entry in zip.Entries)
266+
{
267+
if (entry.FileName.Contains(".png") || entry.FileName.Contains("jrxml"))
268+
{
269+
entry.Extract(extractPath);
270+
}
271+
}
269272
}
270-
271-
ZipFile.ExtractToDirectory(filePath, extractPath);
272273
File.Delete(filePath);
273274
_coreHelper.bus.SendLocal(new GenerateJasperFiles(templateId));
274275

@@ -278,10 +279,12 @@ public HttpResponseMessage UploadEformZip()
278279
}
279280
return Request.CreateResponse(HttpStatusCode.BadRequest, LocaleHelper.GetString("InvalidRequest"));
280281
}
281-
catch (Exception)
282+
catch (Exception ex)
282283
{
283284
return new HttpResponseMessage(HttpStatusCode.InternalServerError);
284285
}
285286
}
286287
}
288+
289+
287290
}

eFormAPI/eFormAPI/eFormAPI.Web.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,9 @@
8282
<Reference Include="Castle.Windsor, Version=4.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
8383
<HintPath>..\packages\Castle.Windsor.4.1.0\lib\net45\Castle.Windsor.dll</HintPath>
8484
</Reference>
85+
<Reference Include="DotNetZip, Version=1.11.0.0, Culture=neutral, PublicKeyToken=6583c7c814667745, processorArchitecture=MSIL">
86+
<HintPath>..\packages\DotNetZip.1.11.0\lib\net20\DotNetZip.dll</HintPath>
87+
</Reference>
8588
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
8689
<HintPath>..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll</HintPath>
8790
</Reference>

eFormAPI/eFormAPI/packages.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<package id="Base32" version="1.0.0.26" targetFramework="net461" />
1010
<package id="Castle.Core" version="4.3.1" targetFramework="net461" />
1111
<package id="Castle.Windsor" version="4.1.0" targetFramework="net461" />
12+
<package id="DotNetZip" version="1.11.0" targetFramework="net461" />
1213
<package id="EntityFramework" version="6.2.0" targetFramework="net461" />
1314
<package id="EPPlus" version="4.5.2.1" targetFramework="net461" />
1415
<package id="Microsoft.AspNet.Cors" version="5.0.0" targetFramework="net46" />

0 commit comments

Comments
 (0)