2010-11-03 38 views
67

如果html文件是本地的(在我的C驱动器上),但是如果html文件位于服务器上而图像文件是本地的,则不起作用。这是为什么?为什么我无法做<img src="C:/localfile.jpg">?

任何可能的解决方法?

+1

请问你为什么会想要做这样的事情? – 2010-11-03 19:23:22

+1

@BorisCallens例如,当我在自己的机器上拥有新图像时,我可能想要测试我的暂存网站上图像的更改,并且我不想完成整个上传到暂存过程。似乎做到这一点的唯一方法是在开发环境中更改映像,而不是反向登台。 – 2015-02-02 07:47:23

+0

这也是一个很好的方式来开玩笑你的技术水平较低的熟人,使他们认为你已经入侵了一个网站。 – 0112 2016-04-20 22:21:47

回答

46

如果客户端可以请求本地文件系统文件,然后使用JavaScript来弄清楚它们是什么,那将是一个安全漏洞。

解决此问题的唯一方法是在浏览器中构建扩展。 Firefox扩展和IE扩展可以访问本地资源。 Chrome的限制性更大。

+0

仍然,闪光管理访问任何用户选择,甚至在Chrome – Javier 2010-11-03 19:51:16

+0

Upvoted这是因为它回答了原因,并给出了一些方法。我会做的(我知道我没有提供太多的背景)是创建一个本地web服务器来为本地图像服务。这样浏览器可以显示它们。 – PeterV 2010-11-04 01:26:50

+0

Flash只能访问具有策略文件的本地资源,否则它将进入本地模式并以其他方式进行限制。 – 2010-11-04 13:09:39

13

C:不是公认的URI方案。改为尝试file://c|/...

24

浏览器不允许访问本地文件系统,除非您访问本地html页面。你必须在某处上传图像。如果它与html文件位于同一目录中,那么您可以使用<img src="localfile.jpg"/>

23

不应该使用“file:// C:/localfile.jpg”而不是“C:/localfile.jpg”?

+5

谢谢。 7年的.NET开发人员,我忘了把文件放在前面// – 2015-09-02 01:53:41

+3

仍然无法使用! – 2016-04-04 05:09:34

2

Newtang关于安全规则的观察放在一边,你如何知道任何查看你的页面的人都会在c:\localfile.jpg上看到正确的图像?你不能。即使你认为你可以,但你不能。首先,它预设了一个Windows环境。

+0

除非你可以。我没有给出太多的问题背景,我知道:)但在这种情况下,我们实际上可以知道。 – PeterV 2010-11-04 01:36:19

+5

如果他只打算在一个办公室里有10个用户,他们都有Windows环境,并且在c:\ localfile.jpg上有正确的图像,那该怎么办?为此,他不仅能够知道正确的图像在那里,而且还能控制它们。 – Nazca 2014-01-28 00:37:06

+0

这个问题是有效的,因为他的要求是针对Windows环境,服务于非常有限的受众。例如,当我设计基于Arduino的Web服务器时,遇到了同样的问题,其中唯一的客户端是与Arduino服务器位于同一LAN上的Windows PC。 Arduino向客户端提供图片速度太慢,因此我需要将图像存储在客户端计算机上。 – PrashanD 2017-05-18 05:30:01

0

您需要上传图片,然后链接到服务器上的图像。

1

我看到你正在尝试做的两种可能性:

  1. 您希望您的网页,服务器上运行,发现你最初设计它的计算机上的文件?

  2. 你希望它从在页面上查看的电脑中获取?

选择1只没有意义:)

选项2将是一个安全漏洞,浏览器禁止观众的机器上的网页(从web服务)加载内容。

凯尔哈德森告诉你你需要做什么,但是这很基础,我很难相信这是你想要做的。

-5

嗯,只是觉得...有数以十亿计算机有C:\驱动器,所以你如何期望服务器上的HTML知道你的本地C:\ localfile.jpg?一切都必须在服务器上。

将您的图像文件移动到服务器。您需要将标记重命名为< img src =“localfile.jpg”>请务必将其放在文档所在的同一目录中,但我建议您添加“images”目录并将图像放在images目录中并写入这:< img src =“images/localfile.jpg”>在您的文件上。

+4

我讨厌这种似乎困扰着SO的答案。我正在编写一个脚本来自动执行一台计算机上的任务,并且不关心那里的数十亿计。这个问题是有效的。嗯,多想一点。 – DaveWalley 2014-06-11 17:51:01

0

如何让图像成为用户选择的东西?使用input:file标记,然后在选择图像后,在客户端网页上显示它?这对大多数事情都是可行的。现在我正试图让它为IE工作,但是与所有的微软产品一样,它是一个集群fork()。

3

IE 9:如果您希望用户在将图像发布到服务器之前先查看图像: 用户应将该网站添加到“可信网站列表”。

1

,如果你使用谷歌Chrome浏览器,你可以使用这样

<img src="E://bulbpro/pic_bulboff.gif" width="150px" height="200px"> 

但是如果你使用Mozila Firefox浏览器,你需要添加“文件”恩。

<img src="file:E://bulbpro/pic_bulboff.gif" width="150px" height="200px"> 
+0

那对于我来说在Chrome中没有工作,但它在IE中工作吗? – octopus 2016-06-22 14:30:28

2

老实说,最简单的方法是将文件托管添加到服务器。

  • 打开IIS

  • 添加虚拟目录下默认Web站点

    • 虚拟路径将是你想要浏览的浏览器是什么。所以,如果你选择“服务器名/图片,你将能够通过进入http://serverName/images
    • 然后加入对C的物理路径浏览到它:驱动
  • 添加适当的权限在文件夹上在C:驱动器的“网络服务”和“IIS应用程序池\默认应用”

  • 刷新默认Web站点

  • 大功告成,您可以通过导航到012,现在浏览到该文件夹​​中的任何图像,并使用该网址在您的IMG SRC

希望这可以帮助别人

0

如果你部署不仅仅是为了个人或某些客户端本地的网站,你可以通过在网站上投放mklink /D MyImages "C:/MyImages"解决这个问题根目录作为cmd中的管理员。然后在html中,执行<img src="MyImages/whatever.jpg">,mklink建立的符号链接会将相关的src链接与C盘上的链接相连接。它为我解决了这个问题,所以它可以帮助其他人来解决这个问题。

(显然,这将不会对公共网站工作,因为你不能在用户计算机上运行CMD命令容易)

相关问题