通过<input type='file' />上传文件是网站应用系统的一个经典应用,可参考的文章较多。因为多种原因,笔者不能远程桌面连接服务器,只有通过网站方式上传更新的应用系统文件。正好五一几天,把原来的有关构思编程实现,即巩固了所学的ASP.NET MVC WebApi知识,也做一个通用的文件上传网站。本文不打算介绍实际的通用网站,而是用一个简单实例主要介绍相关技术。
1、构建和初始化路由
控制器采用默认路由,WebApi采用定制路由,见如下全局文件Global、默认过滤器配置、默认控制器路由配置和定制WebApi路由配置程序的代码:
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing;
namespace CSUST.Files
{
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start() // 全局文件 Global.asax.cs
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
this.SetJsonFormatter();
}
private void SetJsonFormatter()
{
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
System.Net.Http.Headers.MediaTypeHeaderValue jsonFormatter = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Add(jsonFormatter); // 必须
}
}
}
using System.Web;
using System.Web.Mvc;
namespace CSUST.Files
{
public class FilterConfig // 过滤器配置 FilterConfig.cs
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}
}
}
using System.Web.Mvc;
using System.Web.Routing;
namespace CSUST.Files
{
public class RouteConfig // 默认控制器路由配置 RouteConfig.cs
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");