【问题标题】:How to display image which is stored in local drive?如何显示存储在本地驱动器中的图像?
【发布时间】:2010-06-28 07:39:10
【问题描述】:

我有一个 asp 页面,我必须在其中显示存储在本地磁盘 C 中的图像: IE.. C:\Program Files\Adrenalin\Adrenalin\UploadedFiles\TemplateFile\abc.jpg

我该怎么做……我做不到。 图片不显示,而是显示一个空的图片持有者,其中包含指定的图片名称和不可用的 URL。

请帮忙....

【问题讨论】:

  • 给我们看一些代码。如果您不发布您的代码,很难猜测您遇到了什么问题以及您遇到了什么错误和问题。
  • 实际上我有一个数据库,其中为不同的员工存储了上述路径......当我点击该员工的姓名时,它应该检索与该员工对应的图像路径员工并显示其图像。现在我可以从数据库中检索路径,但它不显示存储在 C: 驱动器中的图像。可能发生了什么问题?

标签: asp.net


【解决方案1】:

如果图像位于网站文件夹之外,您将遇到权限问题。传统上,网站在 NETWORK SERVICE 用户帐户下运行,这将限制对文件夹外文件的访问。您需要从具有类似访问权限的文件夹中提取文件,并且这样做是非常不明智的,尤其是从 Program Files 中。

您可能应该通过网页或网络服务代理文件,这不会暴露图像是在网站外部提供的事实。您需要确保目标文件夹 C:\Program Files\Adrenalin\Adrenalin\UploadedFiles\TemplateFile 具有网络服务读取权限。

例如。创建一个空白的 ASP.NET 页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ImageServer.aspx.cs" Inherits="ImageServer" %>

后面有代码:

class ImageServer
{
  void Page_Load(object sender, EVentArgs e)
  {
    Response.ContentType="image/jpeg"; // for JPEG file
    string physicalFileName=@"C:\Program Files\Adrenalin\Adrenalin\UploadedFiles\TemplateFile\abc.jpg";
    Response.WriteFile(physicalFileName);
  }
}

然后通过访问 URL 在浏览器中进行测试

http://<localhost>/<website>/ImageServer.aspx

你应该得到图像。

然后,在标签中,使用页面的 URL 作为图片占位符:

<img src="ImageServer.aspx" alt="Image served" />

更新:

查看您最新的 cmets,我建议您发送带有某种员工代码的 QueryString 参数,并使用它来查询数据库并在 Page_Load() 方法中获取适当的文件名。不要将文件名作为 QueryString 的一部分发送。

【讨论】:

  • 这很好用。我不明白为什么网页代理可以访问图像,但另一个不能。我觉得我错过了一些东西 - 你知道我可以在哪里阅读更多相关信息吗?
【解决方案2】:

您尝试做的事情可能会奏效,但在 Web 开发中非常不鼓励这样做。撇开权限问题(非常严重)不谈,您永远不能假设您的图像将在您在驱动器 C: 上提供的绝对路径中可用。

您应该做的是,在您的网站目录中创建一个文件夹并使用它来存储图像,并使用相对链接而不是绝对链接。

即使您现在设法使绝对链接正常工作,也要为将来在不同配置下运行应用程序时出现的严重问题做好准备。

【讨论】:

    【解决方案3】:

    复制项目根文件夹中的图像,并仅提供图像源作为图像的名称,而不是完整路径。 例如,img src = "battlefield.jpg"

    【讨论】:

      猜你喜欢
      • 2013-01-21
      • 1970-01-01
      • 2020-12-29
      • 2011-01-11
      • 2014-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多