html 图片来源来自UNC路径

html Image source from UNC path

我需要将图像源设置为网络上的某个位置。

图片位于machineName\mappedPath\abc.jpg.

虽然我只需要它在 IE v9 及更高版本中工作,但它不会在任何浏览器中加载。当我检查源中的位置时,它设置为

<img src="\machineName\mappedPath\abc.jpg">

当我在 IE 中右键单击图像占位符并查看属性时,我看到地址设置为

file://machineName/mappedPath/abc.jpg

将文件资源管理器与这些路径中的任何一个一起使用都可以很好地打开图像。

我试过添加IP。无法添加域名,因为它不在域中。

我尝试将源设置为正下方的其他路径。我读过一些地方需要 5 个前斜线,但没有任何区别

<img src="file://\machineName\mappedPath\abc.jpg">
<img src="file:////\machineName\mappedPath\abc.jpg">
<img src="file://///\machineName\mappedPath\abc.jpg">
<img src="file:////machineName/mappedPath/abc.jpg">
<img src="file://///machineName/mappedPath/abc.jpg">
<img src="\machineName\mappedPath\abc.jpg">

我还尝试通过添加防火墙规则启用文件共享

https://blogs.msdn.microsoft.com/windows_azure_connect_team_blog/2011/01/20/windows-azure-connect-use-case-enable-file-sharing-on-windows-azure-vm/

附带说明一下,路径是否必须映射为网络驱动器,或者将其设置为网络共享就足够了吗?

不是确定的来源,但这是我遇到的非常常见的信息 https://jonlabelle.com/snippets/view/html/create-html-link-to-unc-path,但对我来说不起作用(在 IE 中)

我找到了 this post。它可能有一些相关信息。

这是来自 Paul Zahra 的答案:

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

这里@Html.PhotoBase64ImgSrc(image)中的'image'是纯网络UNC,例如

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

前两个是协议指示符的一部分("file://"),然后是主机名(应该是应该访问文件的主机名。即localhost,这是默认的,所以可以留空!),然后是另一个斜杠,然后是 UNC 路径开始,这解释了最后两个斜杠,因为所有 UNC 路径都以两个斜杠开头。

尝试过以下方法吗?

<img src="file://localhost/\machineName\mappedPath\abc.jpg">

我的 NAS 上有一些照片。为了能够展示它们,我不得不做一些认真的研究,因为这很痛苦。不知何故几乎没有任何信息。这是我所做的:

我也尝试了所有可能的 //\、////、这些和 IP 的组合以及其他...无法让它工作。

但是实际起作用的是 was/is 例如上传到 \IE-NAS-01\Data\Pictures。这样我就可以使用它,因为一旦您为这些操作设置了权限,就允许 PHP 这样做。

这是因为 HTML 没有被授权走出你的 wwwroot 目录,所以你不能访问你的服务器或网络上的任何文件。 但是一旦你你的虚拟目录已经设置好了,它是 wwwroot."part".

希望对您有所帮助

干杯

编辑: 你会在这里找到更多: - Stack Overflow #13421784 -

用php在root外显示一张图片:

<img src="http://path.to/this/file.php"/>

file.php:

<?php
header('Content-Type: image/jpeg');
readfile('path/to/image.jpeg');

这样就可以避开限制了!干杯!

PS:内容类型:

header('Content-Type: image/gif');
header('Content-Type: image/jpeg');
header('Content-Type: image/png');

你应该在 file:// 前缀的路径中再添加 3 个 /:

<img src="file://///machineName/mappedPath/abc.jpg">