图像无法解析为asp webapp(c#)

时间:2010-03-22 13:41:50

标签: c# asp.net html image

我一直在研究一个asp web应用程序,它涉及用户注册一个人的详细信息,包括该人的图像。详细信息/图像的文件名存储在SQL数据库中,图像文件名存储在NVARCHAR列中,而不是将实际图像存储在数据库中。

我创建了一个目录C:\ Images,应用程序将存储图像文件。只要将图像移动到此位置,应用程序就能正常工作,但是当我打开显示细节/图像的页面时,图像永远不会呈现。

我在开发过程中通过将图像存储在作为项目一部分的文件夹中来解决这个问题,但是在将项目发布到服务器之后,应用程序拒绝允许将图像保存在{{{}内的任何目录中。 1}}。

所以我需要找出当图像存储在不在项目中的文件夹中时图像不会呈现的原因。

我检查了HTML页面的来源,该页面也指向了正确的位置和文件名:

C:\Inetpub\wwwroot\

页面背后的代码在下面的代码中呈现图像:

img id="ctl00_MainContent_CandidateImage" src="C:\Images\applicant11.jpg" alt="Candidate Image" style="border-width:1px;border-style:solid;height:208px;width:208px;" 

有没有人有任何想法?

干杯!

6 个答案:

答案 0 :(得分:6)

当这在浏览器上呈现时,您实际上是在告诉它查看客户端的c:驱动器以显示图像...

我不知道为什么你不能用wwwroot保存,这可能只是一个权限问题,可以克服,或者你可以在你的站点中创建一个指向你图像文件夹的虚拟目录并使用它页面中的虚拟目录网址。

答案 1 :(得分:3)

你的图像应该是/images/bob.jpg相对于应用程序而不是操作系统驱动器,即使这是一个虚拟路径...但图像不会在C:\驱动器上无论如何都是客户。

如果IIS应用程序/站点中有虚拟目录Images/,并且它在服务器上指向C:\Images,则您的URL将如下所示:

CandidateImage.ImageUrl = "~/Images/" + CandidatePhoto;

To create a virtual directory like this, see here

答案 2 :(得分:1)

检查服务器上文件夹的权限。您可能已使用计算机特有的权限将其从您的开发计算机上复制,以限制其他人的访问权限。

答案 3 :(得分:1)

图片问题在于您指的是您计算机上的某个位置,而不是相对于文件本身位置的网址。为了使浏览器能够渲染图像,它必须能够访问该图像的URL。你有效地对浏览器说的是在用户计算机上找到图像,而不是在服务器上或其他地方找到图像

答案 4 :(得分:1)

您无法将路径设置为“c:\ images”,因为当渲染图像时,浏览器将在客户端计算机上查找图像。您可以执行以下两种解决方案之一:

  1. 您可以在您的网站上创建目录“/ images”,并将该网站设置为“模仿”某个用户,并设置该用户的权限以允许他写入此文件夹。在imageUrl你会写这样的东西:“/ images / image01.jpg”。

  2. 您可以创建一个将为您呈现图像的页面,并通过post或querystring传递图像的ID。像“ImageRender.aspx?ID = 123”之类的东西。 页面将从“c:\ images”加载图像,并在页面的响应中写入图像。在你ImageURL你总是会把“ImageRender.aspx?ID = [imageID]”。

  3. 我希望这会有所帮助。

答案 5 :(得分:1)

感谢大家的意见。

通过添加具有对wwwroot / Images的读/写权限的SERVERNAME \ IUSER_SERVERNAME用户来实现目标

然后使用Server.MapPath(“〜/ images”)将图像保存到服务器上的目录

然后简单地渲染来自(“〜/ Images”)+ CandidatePhoto的图像,就像我之前一样。

再次感谢!