Add backload for multiple file upload

This commit is contained in:
2016-01-27 11:06:47 -05:00
parent 2c73fb6883
commit 37a7a24436
261 changed files with 28994 additions and 96 deletions
@@ -0,0 +1,45 @@
using Backload.Contracts.Context;
using System.Web;
namespace Backload.Helper
{
/// <summary>
/// This helper class creates the result of type ActionResult from the IBackloadResult object
/// </summary>
public partial class ResultCreator
{
/// <summary>
/// Writes the result directly into the response stream, e.g. for a classic ASP.NET or HTML 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 if ((result.RequestType == RequestType.File) || (result.RequestType == RequestType.Thumbnail))
{
// file data (byte array) response
IFileDataResult data = (IFileDataResult)result;
if ((data.FileData != null) && (result.Exception == null))
response.BinaryWrite(data.FileData);
}
}
}
}
}
+80
View File
@@ -0,0 +1,80 @@
using Backload.Contracts.Context;
using System;
using System.Web;
using System.Web.Mvc;
namespace Backload.Helper
{
/// <summary>
/// This helper class creates the result of type ActionResult from the IBackloadResult object
/// </summary>
public partial class ResultCreator
{
/// <summary>
/// Returns an ActionResult depending on the requested type (Json or file data)
/// </summary>
/// <param name="result">An IBackloadResult instance</param>
/// <returns>An ActionResult instance</returns>
public static ActionResult Create(IBackloadResult result)
{
if ((int)result.HttpStatusCode < 300)
{
// RequestType.Default: Json output has been requested (default).
// Otherwise a file or a thumbnail (bytes) will be returned.
if (result.RequestType == RequestType.Default)
return Create((IFileStatusResult)result);
else if ((result.RequestType == RequestType.File) || (result.RequestType == RequestType.Thumbnail))
return Create((IFileDataResult)result);
}
// Http status code >= 300
return new HttpStatusCodeResult(result.HttpStatusCode);
}
/// <summary>
/// Creates the Json output for the files handled in this request
/// </summary>
/// <param name="result">A IFileStatusResult object with client plugin specfic data.</param>
/// <returns>JsonResult instance or a http HttpStatusCodeResult to send an http status</returns>
public static ActionResult Create(IFileStatusResult result)
{
// Create Json result from the returned client plugin specific file metadata.
if ((result.ClientStatus != null) && (result.Exception == null))
return new JsonResult()
{
Data = result.ClientStatus,
ContentType = result.ContentType,
ContentEncoding = System.Text.Encoding.UTF8,
MaxJsonLength = Int32.MaxValue,
RecursionLimit = null,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
// 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 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);
}
}
}