c#实现文件跨域传输
时间: 2023-07-11 15:18:15 浏览: 242
在C#中实现跨域文件传输,可以通过Web API或ASP.NET MVC来实现。下面分别介绍这两种实现方式。
1. 使用Web API实现文件跨域传输
Web API是.NET框架中提供的一种用于构建RESTful服务的工具,可以通过它来实现文件跨域传输。
首先,需要在Web API的配置文件WebApiConfig.cs中添加以下代码,启用跨域支持:
```csharp
public static void Register(HttpConfiguration config)
{
// 启用跨域支持
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
// 配置路由
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
```
然后,在控制器中添加一个上传文件的接口,如下所示:
```csharp
[HttpPost]
[Route("api/upload")]
public async Task<IHttpActionResult> UploadFile()
{
if (!Request.Content.IsMimeMultipartContent())
{
return BadRequest("不支持的媒体类型");
}
var provider = new MultipartMemoryStreamProvider();
await Request.Content.ReadAsMultipartAsync(provider);
foreach (var file in provider.Contents)
{
var filename = file.Headers.ContentDisposition.FileName.Trim('\"');
var buffer = await file.ReadAsByteArrayAsync();
// 处理上传的文件
}
return Ok("上传成功");
}
```
2. 使用ASP.NET MVC实现文件跨域传输
ASP.NET MVC也可以实现文件跨域传输。需要在控制器中添加一个方法,用于接收上传的文件,如下所示:
```csharp
[HttpPost]
public ActionResult UploadFile()
{
if (Request.Files.Count == 0)
{
return Content("没有上传的文件");
}
var file = Request.Files[0];
var filename = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/Uploads"), filename);
file.SaveAs(path);
return Content("上传成功");
}
```
然后,在Web.config文件中添加以下代码,启用跨域支持:
```xml
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
</system.webServer>
```
这样就可以实现ASP.NET MVC跨域文件传输了。
阅读全文