ASP。 NET MVC 5图像路由

时间:2017-03-27 10:05:20

标签: asp.net asp.net-mvc asp.net-mvc-5 routing

我有ASP.NET MVC应用程序,类似于Wiki。这个应用程序有很多页面,页面使用图片。页面内容存储在数据库中,但是它们的图像存储在文件系统中。我决定将图像从文件系统移动到数据库。我真的已将图像移动到数据库(使用sql server中的filetables)。一切都好,但现在我遇到了问题。以前,当图像存储在文件夹中时,我使用它们:

<img src='/Attachments/myImage.png' />

但是现在我从db获得了图像数据:

public class ImagesController : Controller
{
    public FileResult GetFile(string filename)
    {
        byte[] data = .... // here is retrieving data from db;
        string mimeType = ... // here is detecting mime type           
        return File(data, mimeType);
    }
}

和img-tags的src属性发生了变化:

<img src='/Images/GetFile?filename=myImage.png' />

对我来说这是一个问题,因为我必须编辑所有页面并更改图像链接。有没有办法在不编辑所有网页内容的情况下将图片的请求从/Attachemts/myImage.png重定向到Images/GetFile?filename=myImage.png?我试图使用愚蠢的路线:

routes.MapRoute("old images", "Attachments/{filename}",
new
{
    controller = "Images",
    action = "GetFile"
});

但我失败了。提前谢谢。

1 个答案:

答案 0 :(得分:0)

好的,我自己做了一点研究,因为我需要解决类似问题,我相信这就是你要找的东西:https://weblogs.asp.net/jongalloway/asp-net-mvc-routing-intercepting-file-requests-like-index-html-and-what-it-teaches-about-how-routing-works

事实证明,MVC不会拦截任何带扩展名的网址,您需要更改行为。

希望它有所帮助。