来自UNC路径的{html图像源

时间:2017-08-24 10:44:14

标签: html unc imagesource

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

图片位于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中)

4 个答案:

答案 0 :(得分:2)

我找到了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" />

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

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

答案 1 :(得分:2)

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

试过以下?

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

答案 2 :(得分:1)

您应该使用file:// prefix:

在路径中添加3个/
<img src="file://///machineName/mappedPath/abc.jpg">

答案 3 :(得分:0)

我的NAS上有一些照片。为了能够展示它们,我必须做一些认真的研究,因为这是一种痛苦。几乎没有任何信息在那里。这是我做的:

我也尝试了所有可能的// \,////,这些和IP的结合以及其他什么......没办法让它发挥作用。

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

HTML不会被授予步出wwwroot目录的权限,因此您无法访问服务器或网络上的任何文件。但是,一旦您设置了虚拟目录是&#34; part&#34; wwwroot。

我希望这会有所帮助

干杯

编辑: 你会在这里找到更多: - Stack Overflow #13421784 - https://stackoverflow.com/a/258380/8188398

使用php显示根目录外的图片:

<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');