如何显示存储在本地驱动器中的图像?

问题描述:

我有,我有,以显示存储在我的本地磁盘C中的图像的ASP页: 即 C:\ Program Files文件\肾上腺素\肾上腺素\ UPLOADEDFILES \ TemplateFile \ abc.jpg的如何显示存储在本地驱动器中的图像?

如何我可以这样做吗......我无法这样做。 图像不会显示,而是显示一个空的图像保持器,其中指定的图像的名称和URL不可用。

请帮助....

+1

向我们展示一些代码。如果您没有发布您的代码以及您遇到什么错误和问题,很难猜测您遇到的问题。 – Oded 2010-06-28 07:41:27

+0

实际上我有一个数据库,其中上面提到的路径是为不同的员工存储的......当我点击employeee的名称时,它应该检索与该员工相对应的图像的路径并显示其image.Now我能够从数据库中检索路径,但它不显示存储在C:驱动器中的映像。 可能发生了什么问题? – jasmeet 2010-06-28 07:50:13

你将有权限问题如果图像是网站文件夹之外。传统上,网站在NETWORK SERVICE用户帐户下运行,这将限制对文件夹外文件的访问。您需要从具有相似访问权限的文件夹中提取文件,并且特别不适合这样做,特别是来自Program Files。

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

例如。通过访问URL

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

你应该得到的图像

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

和测试:创建一个空白的ASP.NET页面:

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

与后面的代码。

然后,标签内,使用页面的URL作为您的图像占位符:

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

UPDATE:

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

+0

thanxx ...它的工作原理 – jasmeet 2010-06-28 08:13:10

+0

这很好。但我不明白为什么网页代理可以访问图像,但其他人不能。我觉得我错过了一些东西 - 你知道我可以在哪里阅读更多关于这方面的内容吗? – grinch 2012-11-28 16:43:55

你想要做的事情可以工作,但它在Web开发中非常灰心。把权限问题放在一边(这是非常严重的),你永远不能认为你的图像将在驱动器C:上提供的绝对路径中可用。

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

即使您设法使绝对链接现在可以正常工作,在将来以不同的配置运行应用程序时,您也可以为将来的服务器头痛准备好。

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

+0

为我工作:imgage.ImageUrl =“battlefield.jpg”; – 2015-03-11 15:59:13