具有共享网络的Html Image src路径在firefox中不起作用

时间:2012-01-04 19:01:29

标签: html path image lan

在我的网页中,我使用的是图片标记,src属性指向共享网络位置,即(/server/images/image1.png)。确切的脚本是"<img src="file://///server/images/image1.png"。它在IE中运行良好。在firefox中,当我使用firebug进行调试时显示图像,但它没有显示在页面(用户视图)中。即使它复制此位置并将其放在firefox地址栏中工作正常。使用img标签时会出现什么问题也是什么解决方案?提前谢谢。

5 个答案:

答案 0 :(得分:6)

将此作为答案,以便为像我这样正在搜索如何显示网络图像的其他人提供帮助,并在前3个搜索引擎结果中找到了这个SO帖子。它似乎比在响应中发出图像的java servlet更好的答案。

FireFox不会显示网络图像,所以我创建了一个扩展HtmlHelper的MVC助手。

public static class ImageHelper
{
    /// <summary>Converts a photo to a base64 string.</summary>
    /// <param name="html">The extended HtmlHelper.</param>
    /// <param name="fileNameandPath">File path and name.</param>
    /// <returns>Returns a base64 string.</returns>
    public static MvcHtmlString PhotoBase64ImgSrc(this HtmlHelper html, string fileNameandPath)
    {
        var byteArray = File.ReadAllBytes(fileNameandPath);
        var base64 = Convert.ToBase64String(byteArray);

        return MvcHtmlString.Create(String.Format("data:image/gif;base64,{0}", base64));
    }
}

在MVC视图中使用如下:

using 
<img src="@Html.PhotoBase64ImgSrc(image)" height="60px" width="60px" alt="photo" />

这里的图像&#39; in @ Html.PhotoBase64ImgSrc(image)是一个纯粹的网络UNC,例如。

//Photos/ebaebbed-92df-4867-afe8-0474ef8644eb.jpg

答案 1 :(得分:2)

创建一个常规的HTML img元素,如下所示:

<img id="image1" runat="server" ImageUrl=<%# Eval("Value") %>/>
在后面的代码中执行此操作:
image1.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(bytes);

字节是byte[]

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.QueryString["FileName"] != null)
    {
        // Read the file and convert it to Byte Array
        string filePath = "C:\\Users\\Public\\Pictures\\Sample Pictures\\";
        string filename = Request.QueryString["FileName"];
        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();
        image1.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(bytes);
    }
}

你完成了。将显示图像。

答案 2 :(得分:0)

解决方案通常是:使用网络服务器

答案 3 :(得分:0)

你可能必须这样做。

<img src="../server/images/image1.png" />

添加“../”后,它基本上会告诉您的浏览器返回一个目录,以便在“../”之后搜索该位置。

文件位于何处以及HTML文档的位置在哪里?

<强>更新

我也在网络服务器上完成所有工作......这应该可以解决问题。

<img alt="" src="file:///SERVER:/FOLDER/IMAGES/image1.png" />

谢谢, 亚伦

答案 4 :(得分:-1)

我编写了一个servlet,它使用Java文件流从LAN读取文件并将其设置为响应并完成操作。感谢所有人的宝贵回应。