public ActionResult DownloadTempFile(FileDto file) { CheckModelState(); var filePath = Path.Combine(_appFolders.TempFileDownloadFolder, file.FileToken); if (!System.IO.File.Exists(filePath)) { throw new UserFriendlyException(L("RequestedFileDoesNotExists")); } var fileBytes = System.IO.File.ReadAllBytes(filePath); System.IO.File.Delete(filePath); return File(fileBytes, file.FileType, file.FileName); }
public FileDto DownloadWebLogs() { var zipFileDto = new FileDto("WebSiteLogs.zip", MimeTypeNames.ApplicationZip); var outputZipFilePath = Path.Combine(_appFolders.TempFileDownloadFolder, zipFileDto.FileToken); using (var outputZipFileStream = File.Create(outputZipFilePath)) { using (var zipStream = new ZipOutputStream(outputZipFileStream)) { var directory = new DirectoryInfo(_appFolders.WebLogsFolder); var logFiles = directory.GetFiles("*.txt", SearchOption.AllDirectories).ToList(); foreach (var logFile in logFiles) { var logFileInfo = new FileInfo(logFile.FullName); var logZipEntry = new ZipEntry(logFile.Name) { DateTime = logFileInfo.LastWriteTime, Size = logFileInfo.Length }; zipStream.PutNextEntry(logZipEntry); using (var fs = new FileStream(logFile.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, 0x1000, FileOptions.SequentialScan)) { StreamUtils.Copy(fs, zipStream, new byte[4096]); } zipStream.CloseEntry(); } // Makes the Close also Close the underlying stream zipStream.IsStreamOwner = true; } } return zipFileDto; }