public HttpResponseMessage GetResourceForHtml([FromUri] GetResourceForHtmlParameters parameters) { DateTime?clientModifiedSince = GetClientModifiedSince(); bool isModified; DateTime?fileModificationDateTime; byte[] resourceBytes = _coreHandler.GetResourceForHtml(parameters, clientModifiedSince, out isModified, out fileModificationDateTime); if (!isModified) { return(new HttpResponseMessage(HttpStatusCode.NotModified)); } ; if (resourceBytes == null) { return(new HttpResponseMessage(HttpStatusCode.Gone)); } else { HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK); response.Content = new ByteArrayContent(resourceBytes); response.Content.Headers.ContentType = new MediaTypeHeaderValue(_helper.GetImageMimeTypeFromFilename(parameters.ResourcePath)); SetLastModified(response, fileModificationDateTime); return(response); } }
public ActionResult GetResourceForHtml(GetResourceForHtmlParameters parameters) { try { if (!string.IsNullOrEmpty(parameters.ResourceName) && parameters.ResourceName.IndexOf("/", StringComparison.Ordinal) >= 0) { parameters.ResourceName = parameters.ResourceName.Replace("/", ""); } var resource = new HtmlResource(parameters.ResourceName) { //ResourceName = parameters.ResourceName, //ResourceType = Utils.GetResourceType(parameters.ResourceName), DocumentPageNumber = parameters.PageNumber }; var stream = _htmlHandler.GetResource(parameters.DocumentPath, resource); if (stream == null || stream.Length == 0) { return(new HttpStatusCodeResult((int)HttpStatusCode.Gone)); } return(File(stream, Utils.GetMimeType(parameters.ResourceName))); } catch (Exception e) { return(this.JsonOrJsonP(new FailedResponse { Reason = e.Message }, null)); } }
public override void ProcessRequest(HttpContext context) { try { GetResourceForHtmlParameters parameters = new GetResourceForHtmlParameters(); NameValueCollection requestParameters = context.Request.Params; parameters.DocumentPath = base.GetParameter <string>(requestParameters, "documentPath", null); parameters.ResourcePath = base.GetParameter <string>(requestParameters, "resourcePath", null); parameters.RelativeToOriginal = base.GetParameter <bool>(requestParameters, "relativeToOriginal", false); parameters.InstanceIdToken = base.GetParameter <string>(requestParameters, Constants.InstanceIdRequestKey, null); string detailsMessage = String.Format("GetResourceForHtml\r\nRoot Storage Path:{0}\r\n" + "Processing Folder Path:{1}\r\n" + "Document Path:{2}\r\n" + "Resource Path:{3}\r\n", _rootPathFinder.GetRootStoragePath(), _rootPathFinder.GetCachePath(), parameters.DocumentPath, parameters.ResourcePath); _logger.LogMessage(detailsMessage); DateTime?clientModifiedSince = GetClientModifiedSince(context); bool isModified; DateTime?fileModificationDateTime; byte[] resourceBytes = GetResourceForHtml(parameters, clientModifiedSince, out isModified, out fileModificationDateTime); string mimeType = _helper.GetImageMimeTypeFromFilename(parameters.ResourcePath); context.Response.ContentType = mimeType; if (context.Request.RequestType == "HEAD") // IE SVG { context.Response.AddHeader("Content-Length", resourceBytes.Length.ToString()); } else { if (!isModified) { context.Response.StatusCode = (int)HttpStatusCode.NotModified; return; } SetLastModified(context, fileModificationDateTime); if (resourceBytes == null) { context.Response.StatusCode = (int)HttpStatusCode.Gone; } else { context.Response.BinaryWrite(resourceBytes); } } } catch (Exception exception) { OnException(exception, context); } }
protected void Page_Load(object sender, EventArgs e) { _htmlHandler = (ViewerHtmlHandler)Session["htmlHandler"]; GetResourceForHtmlParameters parameters = new GetResourceForHtmlParameters(); parameters.DocumentPath = GetValueFromQueryString("documentPath"); parameters.ResourceName = GetValueFromQueryString("resourceName"); parameters.PageNumber = int.Parse(GetValueFromQueryString("pageNumber") != String.Empty ? GetValueFromQueryString("pageNumber") : "0"); if (!string.IsNullOrEmpty(parameters.ResourceName) && parameters.ResourceName.IndexOf("/", StringComparison.Ordinal) >= 0) { parameters.ResourceName = parameters.ResourceName.Replace("/", ""); } try { var resource = new HtmlResource { ResourceName = parameters.ResourceName, ResourceType = Utils.GetResourceType(parameters.ResourceName), DocumentPageNumber = parameters.PageNumber }; var stream = _htmlHandler.GetResource(parameters.DocumentPath, resource); if (stream == null || stream.Length == 0) { Response.StatusCode = ((int)HttpStatusCode.Gone); Response.End(); } else { byte[] Bytes = new byte[stream.Length]; stream.Read(Bytes, 0, Bytes.Length); //string contentDispositionString = "attachment; filename=\"" + parameters.ResourceName + "\""; string contentDispositionString = new ContentDisposition { FileName = parameters.ResourceName, Inline = true }.ToString(); HttpContext.Current.Response.ContentType = Utils.GetImageMimeTypeFromFilename(parameters.ResourceName); HttpContext.Current.Response.AddHeader("Content-Disposition", contentDispositionString); HttpContext.Current.Response.AddHeader("Content-Length", stream.Length.ToString()); HttpContext.Current.Response.OutputStream.Write(Bytes, 0, Bytes.Length); HttpContext.Current.Response.Flush(); HttpContext.Current.Response.End(); } } catch { } }
public override void ProcessRequest(HttpContext context) { try { GetResourceForHtmlParameters parameters = new GetResourceForHtmlParameters(); NameValueCollection requestParameters = context.Request.Params; parameters.DocumentPath = base.GetParameter<string>(requestParameters, "documentPath", null); parameters.ResourcePath = base.GetParameter<string>(requestParameters, "resourcePath", null); parameters.RelativeToOriginal = base.GetParameter<bool>(requestParameters, "relativeToOriginal", false); parameters.InstanceIdToken = base.GetParameter<string>(requestParameters, Constants.InstanceIdRequestKey, null); string detailsMessage = String.Format("GetResourceForHtml\r\nRoot Storage Path:{0}\r\n" + "Processing Folder Path:{1}\r\n" + "Document Path:{2}\r\n" + "Resource Path:{3}\r\n", _rootPathFinder.GetRootStoragePath(), _rootPathFinder.GetCachePath(), parameters.DocumentPath, parameters.ResourcePath); _logger.LogMessage(detailsMessage); DateTime? clientModifiedSince = GetClientModifiedSince(context); bool isModified; DateTime? fileModificationDateTime; byte[] resourceBytes = GetResourceForHtml(parameters, clientModifiedSince, out isModified, out fileModificationDateTime); string mimeType = _helper.GetImageMimeTypeFromFilename(parameters.ResourcePath); context.Response.ContentType = mimeType; if (context.Request.RequestType == "HEAD") // IE SVG context.Response.AddHeader("Content-Length", resourceBytes.Length.ToString()); else { if (!isModified) { context.Response.StatusCode = (int) HttpStatusCode.NotModified; return; } SetLastModified(context, fileModificationDateTime); if (resourceBytes == null) context.Response.StatusCode = (int)HttpStatusCode.Gone; else context.Response.BinaryWrite(resourceBytes); } } catch (Exception exception) { OnException(exception, context); } }
public ActionResult GetResourceForHtml(GetResourceForHtmlParameters parameters) { DateTime?clientModifiedSince = GetClientModifiedSince(); bool isModified; DateTime?fileModificationDateTime; byte[] resourceBytes = _coreHandler.GetResourceForHtml(parameters, clientModifiedSince, out isModified, out fileModificationDateTime); if (!isModified) { return(new HttpStatusCodeResult(304, "Not Modified")); } SetLastModified(fileModificationDateTime); if (resourceBytes == null) { return(new HttpStatusCodeResult((int)HttpStatusCode.Gone)); } else { return(File(resourceBytes, _helper.GetImageMimeTypeFromFilename(parameters.ResourcePath))); } }
public ActionResult GetResourceForHtml(GetResourceForHtmlParameters parameters) { if (!string.IsNullOrEmpty(parameters.ResourceName) && parameters.ResourceName.IndexOf("/", StringComparison.Ordinal) >= 0) { parameters.ResourceName = parameters.ResourceName.Replace("/", ""); } var resource = new HtmlResource { ResourceName = parameters.ResourceName, ResourceType = Utils.GetResourceType(parameters.ResourceName), DocumentPageNumber = parameters.PageNumber }; var stream = _htmlHandler.GetResource(parameters.DocumentPath, resource); if (stream == null || stream.Length == 0) { return(new HttpStatusCodeResult((int)HttpStatusCode.Gone)); } return(File(stream, Utils.GetImageMimeTypeFromFilename(parameters.ResourceName))); }
public ActionResult GetResourceForHtml(GetResourceForHtmlParameters parameters) { DateTime? clientModifiedSince = GetClientModifiedSince(); bool isModified; DateTime? fileModificationDateTime; byte[] resourceBytes = _coreHandler.GetResourceForHtml(parameters, clientModifiedSince, out isModified, out fileModificationDateTime); if (!isModified) return new HttpStatusCodeResult(304, "Not Modified"); SetLastModified(fileModificationDateTime); if (resourceBytes == null) return new HttpStatusCodeResult((int)HttpStatusCode.Gone); else return File(resourceBytes, _helper.GetImageMimeTypeFromFilename(parameters.ResourcePath)); }