예제 #1
0
        public ActionResult Download(string reportId)
        {
            var owinContext  = this.HttpContext.GetOwinContext();
            var user         = owinContext.GetUser();
            var tenantId     = user.GetTenantId();
            var userObjectId = user.GetUserObjectId();

            var telemetryContext = new TelemetryContext
            {
                TenantId     = tenantId,
                UserObjectId = userObjectId
            };

            TelemetryHelper.LogVerbose(
                @"ReportController::Download",
                telemetryContext);

            var fileName = DataAccess.GetReportFileName(tenantId, userObjectId, reportId);

            TelemetryHelper.LogInformation(
                FormattableString.Invariant($"Got report file name {fileName} for report {reportId}."),
                telemetryContext);

            var stream = new MemoryStream();

            StorageAccess.DownloadFile(fileName, stream);
            stream.Position = 0;

            TelemetryHelper.LogInformation(
                FormattableString.Invariant($"Got file stream with size {stream.Length} for report {reportId}"),
                telemetryContext);

            return(this.File(stream, @"application/html", $"{fileName}"));
        }