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)));
            }
        }
Ejemplo n.º 7
0
        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));
        }