Not allowed to load local resource:

最后都变了- 提交于 2020-01-07 02:29:22

问题


i want to stream online videos ..but i am facing j query error Not allowed to load local resource: ...i find many solution but that all did not work for me. here is my code...

controller==>>>

 public ActionResult PlayVideo(string VidPath)
        {

            ViewData["VidPath"] = VidPath;
            return View();
        }

view==>>>

<video width="500" height="281" controls>
    <source src="@ViewData["VidPath"]" type="video/mp4">

</video>


回答1:


I had the same problem. Whenever I used Server.MapPath or Path.GetFullPath or just hardcoded "~/Content/images/image.jpg" I always got the same error Not Allowed to load local resources.

The only way it was working for me is when I used "Content/images/image.jpg" without the

~/

at the beginning

So my workaround was like this

var imageName = Path.GetFileName(image);
var parentImage = Directory.GetParent(image);
var parentOrder = Directory.GetParent(parentImage.FullName);
var parentDate = Directory.GetParent(parentOrder.FullName);

<img src="Content/Images/@parentDate.Name/@parentOrder.Name/@parentImage.Name/@imageName" />

It is a little messy but it worked for me. Alternatively, you can also pass in the Variable path in a ViewModel to make a little cleaner code.

If someone knows for a better solution please post it here so people will know the correct Answer.




回答2:


You just need to replace all image/video network paths(or local path) to byte strings in stored Encoded HTML sting. For this you required HtmlAgilityPack to convert Html string to Html document. https://www.nuget.org/packages/HtmlAgilityPack

Find Below code to convert each image src network path(or local path) to byte sting. It will definitely display all images with network path(or local path) in IE,chrome and firefox.

string encodedHtmlString = Emailmodel.DtEmailFields.Rows[0]["Body"].ToString();

            // Decode the encoded string.
            StringWriter myWriter = new StringWriter();
            HttpUtility.HtmlDecode(encodedHtmlString, myWriter);
            string DecodedHtmlString = myWriter.ToString();

            //find and replace each img src with byte string
             HtmlDocument document = new HtmlDocument();
             document.LoadHtml(DecodedHtmlString);
             document.DocumentNode.Descendants("img")
              .Where(e =>
            {
                string src = e.GetAttributeValue("src", null) ?? "";
                return !string.IsNullOrEmpty(src);//&& src.StartsWith("data:image");
            })
            .ToList()
                        .ForEach(x =>
                        {
                            string currentSrcValue = x.GetAttributeValue("src", null);                                
                            string filePath = Path.GetDirectoryName(currentSrcValue) + "\\";
                            string filename = Path.GetFileName(currentSrcValue);
                            string contenttype = "image/" + Path.GetExtension(filename).Replace(".", "");
                            FileStream fs = new FileStream(filePath + filename, FileMode.Open, FileAccess.Read);
                            BinaryReader br = new BinaryReader(fs);
                            Byte[] bytes = br.ReadBytes((Int32)fs.Length);
                            br.Close();
                            fs.Close();
                            x.SetAttributeValue("src", "data:" + contenttype + ";base64," + Convert.ToBase64String(bytes));                                
                        });

            string result = document.DocumentNode.OuterHtml;
            //Encode HTML string
            string myEncodedString = HttpUtility.HtmlEncode(result);

            Emailmodel.DtEmailFields.Rows[0]["Body"] = myEncodedString;


来源:https://stackoverflow.com/questions/38159480/not-allowed-to-load-local-resource

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!