下面是一个使用ASP.NET Web API实现文件上传的代码示例:
创建一个ASP.NET Web API项目。
在项目中创建一个名为FileUploadController
的控制器类。
using System.IO;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http;
public class FileUploadController : ApiController
{
[HttpPost]
public HttpResponseMessage UploadFile()
{
HttpResponseMessage response = new HttpResponseMessage();
// 检查请求是否包含multipart/form-data。
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
// 设置文件上传的路径和文件名。
string root = HttpContext.Current.Server.MapPath("~/App_Data/Uploads");
var provider = new MultipartFormDataStreamProvider(root);
// 读取请求的内容并保存文件。
var task = Request.Content.ReadAsMultipartAsync(provider).
ContinueWith(t =>
{
if (t.IsFaulted || t.IsCanceled)
{
response.StatusCode = HttpStatusCode.InternalServerError;
}
// 获取保存的文件名。
var fileInfo = provider.FileData[0];
string fileName = fileInfo.Headers.ContentDisposition.FileName.Trim('\"');
// 将文件移动到指定的目录。
string filePath = Path.Combine(root, fileName);
File.Move(fileInfo.LocalFileName, filePath);
response.StatusCode = HttpStatusCode.OK;
response.Content = new StringContent("File uploaded successfully.");
});
task.Wait();
return response;
}
}
在上面的代码中,我们在UploadFile
方法中使用MultipartFormDataStreamProvider
类来处理文件上传。其中,root
变量指定了文件上传的路径,provider
变量用于处理请求的内容并保存文件。
WebApiConfig
类中配置路由。using System.Web.Http;
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// 配置路由
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
确保在Global.asax.cs
文件中调用了WebApiConfig.Register
方法。
api/FileUpload/UploadFile
路径。可以使用Postman等工具进行测试。注意:在运行项目之前,请确保App_Data/Uploads
文件夹已经存在,否则请手动创建。
以上代码示例演示了如何使用ASP.NET Web API实现文件上传功能。你可以根据自己的需求进行修改和扩展。