ASP.NET Web API文件上传
创始人
2024-09-16 22:30:59
0

下面是一个使用ASP.NET Web API实现文件上传的代码示例:

  1. 创建一个ASP.NET Web API项目。

  2. 在项目中创建一个名为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变量用于处理请求的内容并保存文件。

  1. 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方法。

  1. 运行项目,使用POST请求发送文件到api/FileUpload/UploadFile路径。可以使用Postman等工具进行测试。

注意:在运行项目之前,请确保App_Data/Uploads文件夹已经存在,否则请手动创建。

以上代码示例演示了如何使用ASP.NET Web API实现文件上传功能。你可以根据自己的需求进行修改和扩展。

相关内容

热门资讯

8分钟了解!哈局十三张安卓辅助... 8分钟了解!哈局十三张安卓辅助,浙江游戏大厅app辅助,必赢方法(有挂透视)1、玩家可以在哈局十三张...
六分钟了解!蜀渝牌乐汇到底有没... 六分钟了解!蜀渝牌乐汇到底有没有外 挂,西兵互娱官方有没有外挂,攻略教程(有挂解说);1、蜀渝牌乐汇...
9分钟了解!新科乐棋牌有挂吗,... 9分钟了解!新科乐棋牌有挂吗,碣石暗宝外挂,安装教程(有挂解说);1、不需要AI权限,帮助你快速的进...
3分钟了解!老友麻将,广客麻将... 3分钟了解!老友麻将,广客麻将软挂神器,系统教程(有挂黑科技)广客麻将软挂神器软件透明挂微扑克wpk...
6分钟了解!哈灵软件黑科技,碧... 6分钟了解!哈灵软件黑科技,碧海麻将是不是有挂的,高科技教程(有挂黑科技)1、实时碧海麻将是不是有挂...
1分钟了解!闲玩随机暗宝有规律... 1分钟了解!闲玩随机暗宝有规律吗,369山东麻将怎样赢,wepoke教程(有挂总结);运闲玩随机暗宝...
二分钟了解!乐清麻将有挂吗,天... 二分钟了解!乐清麻将有挂吗,天狐游戏有挂吗,AI教程(有挂攻略)1、不需要AI权限,帮助你快速的进行...
四分钟了解!同城游双扣辅助器免... 四分钟了解!同城游双扣辅助器免费,地道贵州麻将有挂没,详细教程(有挂细节);1、下载好同城游双扣辅助...
3分钟了解!三三麻将里面的十三... 3分钟了解!三三麻将里面的十三道有挂吗,南通长牌游戏app有挂吗,2025新版(有挂秘笈)1、不需要...
3分钟了解!花花生活圈有辅助吗... 3分钟了解!花花生活圈有辅助吗,顺欣茶楼辅助教程,2025新版教程(有挂透明);1、下载好花花生活圈...