所以我在网上找到了这个图片上传工具。它很漂亮,内置闪存,会在上传之前调整图像大小等。基本上,如果我不必实现它自己提供的功能,它将为我节省大量时间。
除了我希望能够在我的几个具有不同URL的页面上包含swf文件之外,它看起来都很不错。问题是给我的flash对象试图加载一个xml文件,它希望与你的网页在同一个目录中,而且我无法更改它所期望的文件所在的目录。因此我想知道是否有一个如何做到以下几点。
我正在运行MVC3,我想返回一个xml文件,无论它在哪里请求,就像你直接请求它一样。所以mysite.com/test.xml,mysite.com/someurl/test.xml,mysite.com/some/long/nested/url/test.xml都将返回实际上并不存在于其中任何一个中的test.xml在公共内容文件夹中放置所有其他javascripts和css文件等...
答案 0 :(得分:1)
我没有测试过这个,但尝试类似
routes.MapPageRoute("xmlroute", "{anything}.xml", "~/yourfile.xml");
或
routes.MapPageRoute("xmlroute", "{*}.xml", "~/yourfile.xml");
或者你可以尝试
routes.MapRoute(
"xmlroute",
"{whatever}.xml",
new { controller = "FileHandler", action = "XmlFile"}
);
然后您的控制器操作可以返回File(yourXmlFile)结果。
答案 1 :(得分:0)
首先,在默认路由之前定义以下路由:
routes.MapRoute(
"XML",
"{*pathAndFile}",
new { controller = "Content", action = "Index" },
new { pathAndFile = @"^.+\.xml$" }
);
接下来,使用以下ContentController
操作创建Index
:
public ActionResult Index(string pathAndFile)
{
var filePath = Request.MapPath("~/Content/" + pathAndFile.Split(new string[] { @"/" }, StringSplitOptions.None).Last());
if (System.IO.File.Exists(filePath))
return File(filePath, "text/xml");
return null;
}
这会将以“.xml”结尾的任何请求路由到ContentController,ContentController将检查xml文件是否存在,并将提供所请求的文件(如果存在)。