Javascript 为什么可以';我不知道<;img src=”等;C:/localfile.jpg">;?

Javascript 为什么可以';我不知道<;img src=”等;C:/localfile.jpg">;?,javascript,html,filesystems,src,Javascript,Html,Filesystems,Src,如果html文件是本地的(在我的C驱动器上),它就可以工作,但是如果html文件在服务器上并且图像文件是本地的,它就不能工作。为什么呢 任何可能的解决方法?C:都不是公认的URI方案。请尝试file://c |/…。浏览器不允许访问本地文件系统,除非您正在访问本地html页面。你必须把图像上传到某个地方。如果它与html文件位于同一目录中,那么您可以使用您是否应该使用“file://C:/localfile.jpg”而不是“C:/localfile.jpg”?如果客户端可以请求本地文件系统文件,

如果html文件是本地的(在我的C驱动器上),它就可以工作,但是如果html文件在服务器上并且图像文件是本地的,它就不能工作。为什么呢


任何可能的解决方法?

C:
都不是公认的URI方案。请尝试
file://c |/…

浏览器不允许访问本地文件系统,除非您正在访问本地html页面。你必须把图像上传到某个地方。如果它与html文件位于同一目录中,那么您可以使用

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

如果客户端可以请求本地文件系统文件,然后使用JavaScript找出其中的内容,那么这将是一个安全漏洞


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

抛开Newtang对安全规则的观察不谈,你怎么知道任何浏览你页面的人都会在
c:\localfile.jpg上看到正确的图像?你不能。即使你认为你能,你也不能。首先,它以windows环境为前提。

您还需要上载映像,然后链接到服务器上的映像。

我认为您尝试执行的操作有两种可能性:

  • 您希望您的网页在服务器上运行,以便在最初设计它的计算机上找到该文件

  • 您想让它从正在查看页面的pc上获取它吗

  • 选项1根本没有意义:)

    选项2是一个安全漏洞,浏览器禁止网页(从web提供)在浏览者的机器上加载内容


    Kyle Hudson告诉了您需要做什么,但这是非常基本的,我很难相信这就是您想要做的一切。

    让用户选择图像怎么样?使用输入:文件标签,然后在他们选择图像后,将其显示在客户端网页上?这在大多数情况下都是可行的。现在我正试图让它为IE工作,但与所有microsoft产品一样,它是一个cluster fork()。

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

    如果您使用Google chrome浏览器,您可以这样使用

    <img src="E://bulbpro/pic_bulboff.gif"   width="150px" height="200px">
    
    
    
    但是如果你使用Mozila Firefox,你需要添加“file”ex


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

    • 开放IIS

    • 在默认网站下添加虚拟目录

      • 虚拟路径将是您要在浏览器中浏览到的路径。因此,如果选择“serverName/images”,则可以通过转到
      • 然后在C:驱动器上添加物理路径
    • 向C:驱动器上的文件夹添加“网络服务”和“IIS AppPool\DefaultAppPool”的相应权限

    • 刷新默认网站

    • 现在,您可以浏览到该文件夹中的任何图像,方法是在img src中导航并使用该url


    希望这对某人有所帮助

    如果您仅为自己或某些客户部署本地网站,您可以通过运行
    mklink/D MyImages“C:/MyImages”来解决此问题“
    在网站根目录中作为管理员在cmd中。然后在html中,执行
    ,由mklink建立的符号链接将相对src链接与C驱动器上的链接连接起来。它为我解决了这个问题,所以它可能会帮助其他人来解决这个问题


    (显然,这不适用于公共网站,因为您无法在人们的计算机上轻松运行cmd命令)

    我们可以使用javascript的FileReader()readAsDataURL(fileContent)函数来显示本地驱动器/文件夹文件。 将更改事件绑定到图像,然后调用javascript的showpreview函数。 试试这个-

    <!doctype html>
    <html>
    
    <head>
        <meta charset='utf-8'>
        <meta name='viewport' content='width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no;'>
        <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
        <title></title>
    
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
        <script type="text/javascript">
        function showpreview(e) {
            var reader = new FileReader();
            reader.onload = function (e) {
                $("#previewImage").attr("src", e.target.result);
            }
            //Imagepath.files[0] is blob type
            reader.readAsDataURL(e.files[0]);
        }
        </script>
    </head>
    <body >
        <div>
        <input type="file" name="fileupload" value="fileupload" id="fileupload" onchange='showpreview(this)'>
        </div>
        <div>
            &nbsp;
        </div>
        <div>
        <img width="50%" id="previewImage">
        </div>
    </body>
    </html>
    
    
    功能显示预览(e){
    var reader=new FileReader();
    reader.onload=函数(e){
    $(“#预览图像”).attr(“src”,e.target.result);
    }
    //Imagepath.files[0]是blob类型
    reader.readAsDataURL(e.files[0]);
    }
    
    我尝试了很多技术,最终在C#side和JS端找到了一种。 不能为src属性提供物理路径,但可以将base64字符串作为src-to-Img标记提供。 让我们看看下面的C代码示例

    <asp:Image ID="imgEvid" src="#" runat="server" Height="99px"/>
    

    希望这会有所帮助

    文件开始://
    文件名结束
    应该可以:

    <img src="file:///C:/Users/91860/Desktop/snow.jpg" alt="Snow" style="width:100%;">
    
    
    
    我可以问一下你为什么要做这样的事情吗?@BorisCallens例如,当我在自己的机器上有了新图像,我不想经历上传到暂存的整个过程时,我可能想在我的暂存网站上测试图像的更改。似乎唯一的方法是改变开发环境中的形象,而不是以任何方式登台。这也是一个很好的方法,可以与技术水平较低的熟人开玩笑,让他们认为你已经侵入了一个网站。另一种快速做到这一点的方法是上传文件说,google drive或其他任何东西,然后复制图像url并将其粘贴到
    src=”“
    中,只需在您的计算机上使用开发Web服务器即可。现在这很容易,因为即使是PHP也内置了一个。不过,flash能够访问用户选择的任何内容,即使是在ChromeUp中也是如此,因为它回答了为什么,并给出了一些解决方法。我可能会做的(我知道我没有提供太多的背景)是创建一个本地Web服务器来服务本地图像。通过这种方式浏览器可以显示它们。Flash只能在策略文件就位的情况下访问本地资源,否则它将进入本地模式,并以其他方式受到限制。这种偏执的安全性
     if (File.Exists(filepath)
                                {
                                    byte[] imageArray = System.IO.File.ReadAllBytes(filepath);
                                    string base64ImageRepresentation = Convert.ToBase64String(imageArray);
                                    var val = $"data: image/png; base64,{base64ImageRepresentation}";
                                    imgEvid.Attributes.Add("src", val);
                                }
    
    <img src="file:///C:/Users/91860/Desktop/snow.jpg" alt="Snow" style="width:100%;">