public async Task <IActionResult> PlayVideo(string containerId, string objectId)
        {
            var headObject = await Client.HeadObject(containerId, objectId);

            if (headObject.IsSuccess)
            {
                var fileName    = headObject.GetMeta(metaFileName);
                var contentType = headObject.GetMeta(metaContentType);

                var stream = new BufferedHTTPStream((start, end) =>
                {
                    using (var response = Client.GetObjectRange(containerId, objectId, start, end).Result)
                    {
                        var ms = new MemoryStream();

                        response.Stream.CopyTo(ms);

                        return(ms);
                    }
                }, () => headObject.ContentLength);

                Response.Headers.Add("Content-Disposition", $"attachment; filename={fileName}");

                return(new VideoStreamResult(stream, new MediaTypeHeaderValue("video/mp4")));
            }

            return(new HttpNotFoundResult());
        }
        public async Task <IActionResult> DownloadFile(string containerId, string objectId)
        {
            var headObject = await Client.HeadObject(containerId, objectId);

            if (headObject.IsSuccess && headObject.ContentLength > 0)
            {
                var fileName    = headObject.GetMeta(metaFileName);
                var contentType = headObject.GetMeta(metaContentType);

                Response.Headers.Add("Content-Disposition", $"attachment; filename={fileName}");

                var stream = new BufferedHTTPStream((start, end) =>
                {
                    using (var response = Client.GetObjectRange(containerId, objectId, start, end).Result)
                    {
                        var ms = new MemoryStream();

                        response.Stream.CopyTo(ms);

                        return(ms);
                    }
                }, () => headObject.ContentLength);

                return(new FileStreamResult(stream, contentType ?? "application/octet-stream"));
            }

            return(new HttpNotFoundResult());
        }
Beispiel #3
0
        public async Task<IActionResult> PlayVideo(string containerId, string objectId)
        {
            var headObject = await _swiftService.HeadObject(containerId, objectId);

            if (headObject.IsSuccess)
            {
                var fileName = headObject.GetMeta(metaFileName);
                var contentType = headObject.GetMeta(metaContentType);

                var stream = new BufferedHTTPStream((start, end) =>
                {
                    using (var response = _swiftService.GetObjectRange(containerId, objectId, start, end).Result)
                    {
                        var ms = new MemoryStream();

                        response.Stream.CopyTo(ms);

                        return ms;
                    }

                }, () => headObject.ContentLength);

                Response.Headers.Add("Content-Disposition", $"attachment; filename={fileName}");

                return new VideoStreamResult(stream, "video/mp4");
            }

            return new NotFoundResult();
        }