ASP. NET MVC 5 映像路由



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

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

但是现在我从数据库获取图像的数据:

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 标记的 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"
});

但我失败了。提前谢谢你。

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

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

希望对您有所帮助。

最新更新