HTML-путь SRC-изображения с общей сетью не работает в Firefox - PullRequest
2 голосов
/ 04 января 2012

На моей веб-странице я использую тег изображения, атрибут src указывает на общую сетевую папку, т.е. (/server/images/image1.png).Точный сценарий "<img src="file://///server/images/image1.png".Это нормально работает в IE.В Firefox, когда я делаю отладку с помощью firebug, показывается его изображение, но оно не отображается на странице (вид пользователя).Даже это работает нормально, когда копируешь это место и помещаешь его в адресную строку Firefox.В чем будет проблема при использовании тега img и какое решение для этого?Заранее спасибо.

Ответы [ 5 ]

6 голосов
/ 25 марта 2015

Помещая это как ответ здесь, чтобы помочь другим, похожим на меня, которые искали способ отображения сетевых изображений и наткнулись на этот пост в топ-3 результатов поисковой системы. Это также кажется лучшим ответом, чем Java-сервлет, выдающий изображения в ответе.

FireFox не будет отображать сетевые изображения, поэтому я создал помощник MVC, расширяющий HtmlHelper.

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" />

здесь 'изображение' в @ Html.PhotoBase64ImgSrc (изображение) является чистой сетевой UNC, например,

//Photos/ebaebbed-92df-4867-afe8-0474ef8644eb.jpg
2 голосов
/ 12 июля 2016

Создайте обычный 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);
    }
}

Вы находитесьсделанный.Изображение будет отображено.

0 голосов
/ 04 января 2012

Возможно, вам придется сделать это так.

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

Как только вы добавляете "../", он в основном говорит вашему браузеру вернуться на один каталог для поиска местоположения после "../".

Где находится файл и где находится ваш HTML-документ?

UPDATE:

Я также делаю всю работу на сетевом сервере ... Это должно сработать.

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

Спасибо, Аарон

0 голосов
/ 06 января 2012

Я написал сервлет, который читает файл из локальной сети с помощью Java File Stream и устанавливает его в ответ, и он делает свое дело. Спасибо всем за ценный ответ.

0 голосов
/ 04 января 2012

Решение обычно таково: используйте веб-сервер .

...