asp.net mvc:如何跨域共享图像文件

时间:2012-01-18 10:01:55

标签: asp.net-mvc

我处于这样一种情况,即我有两个站点,一个是另一个站点的子域。一个站点将图像上载到文件夹,并将对图像的引用保存到数据库,该数据库可由另一个站点访问。

我需要做的是访问两个站点中的图像。

我考虑将文件保存在公共html文件夹之外的两个站点都可访问的文件夹中,但是我不知道如何在没有显示完整服务器路径的令人讨厌的src属性的情况下引用这些图像。

谢谢

1 个答案:

答案 0 :(得分:2)

你可以编写一个控制器动作来为它们服务:

public ActionResult Image(int id)
{
    var image = ... go and fetch the image information from the database (you will need the path to the image on the server and the content type)
    string path = image.Path; // could be any absolute path anywhere on your server, for example c:\foo\bar.jpg
    string contentType = image.ContentType; // for example image/jpg
    return File(path, contentType);
}

然后在你的观点中:

<img src="@Url.Action("Image", "SomeController", new { id = 123 })" alt="" />

将呈现为:

<img src="/SomeController/Image/123" alt="" />

其中123显然是数据库中图像记录的唯一标识符。

另外,请确保您已将您的应用程序在IIS下运行的帐户的必要权限授予您存储图像的文件夹,否则如果此文件夹位于文件夹之外,则无法读取它们应用程序根目录。