Download Archive Files in Zip

 avatar
unknown
csharp
4 years ago
1.8 kB
5
Indexable
public ActionResult DownloadMemberRegistrationArchivedCsvFiles()
        {
            try
            {
                string achiveFolderPath = Sitecore.IO.FileUtil.MapPath("~/App_Data/logs/Custom/Archieved/");
                DirectoryInfo directory = new DirectoryInfo(achiveFolderPath);
                if (directory.Exists)
                {
                    string zipPath = $"{achiveFolderPath}member_registration_logs_{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.zip";

                    var files = directory.GetFiles()?.Select(x => new MemberRegistraionFileModel()
                    {
                        FileName = x.Name,
                        FilePath = x.FullName
                    });

                    if (files != null && files.Any())
                    {
                        using (var memoryStream = new MemoryStream())
                        {
                            using (ZipArchive archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, false))
                            {
                                foreach (var file in files)
                                {
                                    archive.CreateEntryFromFile(file.FilePath, file.FileName);
                                }
                            }

                            return File(memoryStream.ToArray(), "application/zip", $"member_registration_logs_{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.zip");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Sitecore.Diagnostics.Log.Error("Error occur while creating member registrion zip archive", ex, typeof(ImporterController));
            }

            return null;
        }
Editor is loading...