我有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"
});
但我失败了。提前谢谢。
答案 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不会拦截任何带扩展名的网址,您需要更改行为。
希望它有所帮助。