代码之家  ›  专栏  ›  技术社区  ›  Joe Basirico

无法从ASP.NET中的C:\读取图像

  •  0
  • Joe Basirico  · 技术社区  · 16 年前

    在这一页上,我有:

    <asp:Image ID="test" runat="server" />
    

    test.ImageUrl = @"C:\test\image.jpg";
    test.AlternateText = File.ReadAllText(@"C:\test\text.txt");
    

    这两个文件都按预期存在,并且具有正确的权限。查看页面来源时,我们会看到一个img标记,如下所示:

    <img id="test" src="C:\test\image.jpg" alt="some text to read" style="border-width:0px;" /> 
    

    当我在VS中运行时,不会显示任何图像。如果复制源文件,将其粘贴到html文件中,并将其加载到浏览器中,则会显示图像。有人能解释为什么会这样吗?

    9 回复  |  直到 16 年前
        1
  •  3
  •   Andy Wilson    16 年前

    浏览器正在阻止显示图像。我创建了一个静态HTML页面,其中包含一个标记,其“src”指向本地文件系统上的一个图像。如果我在本地打开HTML页面,一切正常。但是,当我在web服务器中托管静态HTML页面时,它停止工作。

    iexplore.exe    6376    QueryDirectory  C:\test.jpg SUCCESS test.jpg
    iexplore.exe    6376    QueryOpen   C:\test.jpg SUCCESS 
    iexplore.exe    6376    QueryDirectory  C:\test.jpg SUCCESS 
    iexplore.exe    6376    CreateFile  C:\test.jpg SUCCESS
    iexplore.exe    6376    ReadFile    C:\test.jpg SUCCESS
    iexplore.exe    6376    CloseFile   C:\test.jpg SUCCESS
    

    但是,IE没有显示图像。我用Firefox重复了这个测试。在本地访问时,ProcMon结果是相同的。远程访问时,ProcMon不产生任何输出。

        2
  •  4
  •   Klaus Byskov Pedersen    16 年前

    这个 src 属于 img file:///C|/test/image.jpg 语法。

        3
  •  3
  •   Sonny Boy    16 年前

    这与分配img src的方式有关。通过提供C:\test\image.jpg作为sourc,您指示浏览器从用户的本地驱动器而不是服务器位置获取图像。

    <img src="/images/image.jpg" alt="Image" />

        4
  •  1
  •   Daniel Auger    16 年前

    我知道您说权限是正确的,但请仔细检查并确保aspnet\aspnet\u wp帐户具有文件位置的权限。运行asp.net应用程序时,它将在此帐户下运行。当您在浏览器中加载HTML文件时,它将按您的方式运行。

        5
  •  1
  •   Nathan Wheeler    16 年前

    这是因为您正在向 src C:\test.html 它只是由web浏览器呈现,并使用本地源作为起始URI,但是当您从另一个源加载时,例如 http://localhost/test.html http://C:\test\image.jpg 不是有效的URL。

        6
  •  1
  •   Proteux    16 年前

        7
  •  1
  •   ChrisLively    16 年前

    这是浏览器的安全“功能”。其目标是防止恶意网站访问您的本地文件,并导致在您不知情的情况下执行这些文件或将其上载到网站。

    显然,这只适用于您直接控制的机器。

        8
  •  0
  •   PA.    16 年前

    html代码无效。它不应在任何浏览器、VS、firefox、IE或任何其他浏览器中呈现。事实上,firefox中没有。

        9
  •  0
  •   user2605818    13 年前

    要从本地服务器驱动器读取图像,首先需要为本地驱动器创建虚拟目录(C:\Gallery),然后才能显示文件夹中的图像。

    例子:

    < asp:Image Id=“Image1”ImageUrl=”<%#Eval(“Filename”、“http://localhost/ImageGallery/{0}”)%>'Width=“150px”Height=“150px”runat=“server”/gt;

    请从http中删除,如http 香卡沙拉西亚

    推荐文章