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()); }
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(); }