/// <summary> /// Writes the result directly into the response stream, e.g. for a classic ASP.NET response /// </summary> /// <param name="response">A standard HttpResponse object</param> /// <param name="result">An IBackloadResult object</param> public static void Write(HttpResponse response, IBackloadResult result) { response.StatusCode = (int)result.HttpStatusCode; if ((int)result.HttpStatusCode < 300) { // Write result to the response (Json or file data, default: Json response) if (result.RequestType == RequestType.Default) { // Json response (We use the systems JavaScriptSerializer, you can also use Newtonsoft.Json) IFileStatusResult status = (IFileStatusResult)result; var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); if ((status.ClientStatus != null) && (result.Exception == null)) { response.Write(serializer.Serialize(status.ClientStatus)); } } else { // file data (byte array) response IFileDataResult data = (IFileDataResult)result; if ((data.FileData != null) && (result.Exception == null)) { response.BinaryWrite(data.FileData); } } } }
/// <summary> /// Handles file data (bytes) if Backload is configured to handle file requests (e.g. thumbsUrlPattern) /// </summary> /// <param name="result">A IFileDataResult object with file data (bytes).</param> /// <returns>FileContentResult instance or a http HttpStatusCodeResult to send an http status</returns> public static ActionResult Create(IFileDataResult result) { // Create a new FileContentResult from the returned file data. if ((result.FileData != null) && (result.Exception == null)) return new FileContentResult(result.FileData, result.ContentType); // A HttpStatusCodeResult result is returned on errors or if files not have been modified (304) return new HttpStatusCodeResult(result.HttpStatusCode); }
/// <summary> /// Handles file data (bytes) if Backload is configured to handle file requests (e.g. thumbsUrlPattern) /// </summary> /// <param name="result">A IFileDataResult object with file data (bytes).</param> /// <returns>FileContentResult instance or a http HttpStatusCodeResult to send an http status</returns> public static ActionResult Create(IFileDataResult result) { // Create a new FileContentResult from the returned file data. if ((result.FileData != null) && (result.Exception == null)) { return(new Microsoft.AspNetCore.Mvc.FileContentResult(result.FileData, result.ContentType)); } // A HttpStatusCodeResult result is returned on errors or if files not have been modified (304) return(new StatusCodeResult((int)result.HttpStatusCode)); }
// GET api/<controller>?fileName=[name] public async Task <HttpResponseMessage> Get(string fileName) { try { IFileHandler handler = GetHandler(); // Call the GET execution method and get the result IFileStatus status = await handler.Services.GET.Execute(); // Create plugin specific result IFileDataResult result = handler.Services.Core.CreateFileResult(); // FIle data (bytes) requested HttpResponseMessage data = new HttpResponseMessage(HttpStatusCode.OK); data.Content = new ByteArrayContent(result.FileData); data.Content.Headers.ContentType = new MediaTypeHeaderValue(result.ContentType); return(data); } catch { return(new HttpResponseMessage(HttpStatusCode.InternalServerError)); } }