private IActionResult DownloadVideoCore(MovieInformation movieInformation) { IActionResult temp = null; try { Log.Logger.Information("Téléchargement de " + movieInformation.FileName); FileStream file = new FileStream(movieInformation.PathFile, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, true); Func <Stream, ActionContext, Task> funcTemp = async(outputStream, context) => { using (var fileStream = new WriteOnlyStreamWrapper(outputStream)) { using (var stream = file) { await stream.CopyToAsync(fileStream); } } }; temp = new FileCallbackResult("application/octet-stream", funcTemp) { FileDownloadName = movieInformation.FileName }; } catch (Exception exception) { Log.Error(exception, "Erreur sur la récupération du film " + movieInformation.Titre); temp = NoContent(); } return(temp); }
public Task ExecuteAsync(ActionContext context, FileCallbackResult result) { SetHeadersAndLog(context, result, null, true); return(result.Callback(context.HttpContext.Response.Body, context)); }