Proxying edited images to prevent CORS errors

This commit is contained in:
Sebastien Ros
2014-02-18 15:22:06 -08:00
parent 1f81355afd
commit d918aec6e1
3 changed files with 18 additions and 3 deletions

View File

@@ -1,9 +1,11 @@
using System; using System;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Net;
using System.Web.Mvc; using System.Web.Mvc;
using Orchard.ContentManagement; using Orchard.ContentManagement;
using Orchard.ImageEditor.Models; using Orchard.ImageEditor.Models;
using Orchard.MediaLibrary;
using Orchard.MediaLibrary.Models; using Orchard.MediaLibrary.Models;
using Orchard.MediaLibrary.Services; using Orchard.MediaLibrary.Services;
using Orchard.Mvc; using Orchard.Mvc;
@@ -91,5 +93,20 @@ namespace Orchard.ImageEditor.Controllers {
return Json(true); return Json(true);
} }
public ActionResult Proxy(string url) {
if (!Services.Authorizer.Authorize(Permissions.ManageMediaContent))
return HttpNotFound();
using (var wc = new WebClient()) {
try {
var data = wc.DownloadData(url);
return new FileContentResult(data, "image");
}
catch {
return HttpNotFound();
}
}
}
} }
} }

View File

@@ -41,7 +41,7 @@
<div id="image-editor-container" class="editor-shadow"> <div id="image-editor-container" class="editor-shadow">
<div id="image-editor-image-wrapper" > <div id="image-editor-image-wrapper" >
@*<canvas id="image-editor-image" class="canvas-shadow"></canvas>*@ @*<canvas id="image-editor-image" class="canvas-shadow"></canvas>*@
<img id="image-editor-image" class="canvas-shadow" src="@Url.Content(mediaPart.MediaUrl)"> <img id="image-editor-image" class="canvas-shadow" src="@Url.Action("Proxy", "Admin", new { url = Url.Content(mediaPart.MediaUrl) })">
</div> </div>
</div> </div>

View File

@@ -2,7 +2,6 @@
using System.Linq; using System.Linq;
using System.Web.Mvc; using System.Web.Mvc;
using Orchard.ContentManagement; using Orchard.ContentManagement;
using Orchard.ContentManagement.MetaData.Models;
using Orchard.Localization; using Orchard.Localization;
using Orchard.Logging; using Orchard.Logging;
using Orchard.MediaLibrary.Models; using Orchard.MediaLibrary.Models;
@@ -12,7 +11,6 @@ using Orchard.Mvc;
using Orchard.Themes; using Orchard.Themes;
using Orchard.UI.Navigation; using Orchard.UI.Navigation;
using Orchard.ContentManagement.MetaData; using Orchard.ContentManagement.MetaData;
using System.Collections.Generic;
using Orchard.Validation; using Orchard.Validation;
namespace Orchard.MediaLibrary.Controllers { namespace Orchard.MediaLibrary.Controllers {