.net core 上传文件到本地服务器

简介: ## 1、本文是上传文件到本地服务器,主要以作者做的业务上传apk为例子,下面直接上代码```csharp[HttpGet, HttpPost, HttpOptions][Consumes("application/json", "multipart/form-data")]public IActionResult UploadFileToServer([FromForm] IFormCollection file){ try { IFormFile item = null; if(file.IsNull() || file.Count

1、本文是上传文件到本地服务器,主要以作者做的业务上传apk为例子,下面直接上代码

[HttpGet, HttpPost, HttpOptions]
[Consumes("application/json", "multipart/form-data")]
public IActionResult UploadFileToServer([FromForm] IFormCollection file)
{
   
    try
    {
   
        IFormFile item = null;
        if(file.IsNull() || file.Count <= 0)
        {
   
            var files = Request.Form.Files;;
            if(files.Count <= 0)
            {
   
                return ErrorResult("未获取到上传文件,请重新上传", 111111);
            }
            item = files[0];
        }
        var filename = string.Empty;
        // 服务器将要存储文件的路径
        var Folder = AppDomain.CurrentDomain.BaseDirectory + "AppFileUploads/";
        if(Directory.Exists(Folder) == false) // 如果不存在就创建file文件夹
        {
   
            Directory.CreateDirectory(Folder);
        }
        item = file.Files[0];
        if(item == null)
        {
   
            return ErrorResult("文件内容为空,请重新上传", 111112);
        }
        string name = item.FileName; // 获取文件名
        string pathName = Path.GetExtension(name); // 获取后缀名
        if(pathName != ".apk")
        {
   
            return ErrorResult("不支持该文件格式,请上传APK后缀文件", 111113);
        }
        filename = Folder + name;
        if(System.IO.File.Exists(filename))
        {
   
            System.IO.File.Delete(filename);
        }
        using(FileStream fs = System.IO.File.Create(filename))
        {
   
            // 复制文件
            item.CopyTo(fs);
            // 清空缓冲区数据
            fs.Flush();
        }
        return SuccessResult(filename, "文件上传到本地服务器成功!");
    }
    catch(Exception ex)
    {
   
        return ErrorResult("上传文件到本地服务器出现异常,异常原因为:" + ex.Message, 111150);
    }
}

2、关于返回值SuccessResult、ErrorResult是新建控制器类时继承了基类,基类内包含如下方法

/// <summary>
/// 返回成功信息
/// </summary>
/// <param name="data">附加内容</param>
/// <param name="msg">成功信息</param>
/// <returns>返回Result格式信息</returns>
[NonAction]
public IActionResult SuccessResult(object data = null, string msg = "成功")
{
   
    return ToJsonContent(new Result < object > ()
    {
   
        Code = 200,
        Msg = msg,
        Data = data == null ? new {
   } : data
    });
}

/// <summary>
/// 返回错误信息
/// </summary>
/// <param name="msg">错误信息</param>
/// <param name="code">错误码</param>
/// <param name="statusCode">HTTP状态代码的值,未登录和登录过期为HttpStatusCode.Unauthorized,没有权限是HttpStatusCode.Forbidden</param>
/// <returns>返回Result格式信息</returns>
[NonAction]
public IActionResult ErrorResult(string msg, int code, HttpStatusCode statusCode = HttpStatusCode.OK)
{
   
    return ToJsonContent(new Result < object > ()
    {
   
        Code = code,
        Msg = msg,
    });
}

/// <summary>
/// JSON格式转换
/// </summary>
/// <param name="obj"></param>
/// <param name="isNull"></param>
/// <returns></returns>
[NonAction]
public IActionResult ToJsonContent(object obj, bool isNull = false)
{
   
    JsonSerializerOptions options = new JsonSerializerOptions()
    {
   
        WriteIndented = true, //格式化json字符串
            AllowTrailingCommas = true, //可以结尾有逗号
            IgnoreNullValues = isNull, //可以有空值,转换json去除空值属性
            IgnoreReadOnlyProperties = true, //忽略只读属性
            PropertyNameCaseInsensitive = true, //忽略大小写
            Encoder = JavaScriptEncoder.Create(UnicodeRanges.All),
            DictionaryKeyPolicy = JsonNamingPolicy.CamelCase
    };
    options.Converters.Add(new DateTimeJsonConverter());
    return Content(JsonSerializer.Serialize(obj, options));
}

以上就是.net core 上传文件到本地服务器的介绍,做此记录,如有帮助,欢迎点赞关注收藏!

目录
相关文章
|
5月前
|
开发框架 .NET C#
ASP.NET Core Blazor 路由配置和导航
大家好,我是码农刚子。本文系统介绍Blazor单页应用的路由机制,涵盖基础配置、路由参数、编程式导航及高级功能。通过@page指令定义路由,支持参数约束、可选参数与通配符捕获,结合NavigationManager实现页面跳转与参数传递,并演示用户管理、产品展示等典型场景,全面掌握Blazor路由从入门到实战的完整方案。
498 6
|
开发框架 .NET 开发者
简化 ASP.NET Core 依赖注入(DI)注册-Scrutor
Scrutor 是一个简化 ASP.NET Core 应用程序中依赖注入(DI)注册过程的开源库,支持自动扫描和注册服务。通过简单的配置,开发者可以轻松地从指定程序集中筛选、注册服务,并设置其生命周期,同时支持服务装饰等高级功能。适用于大型项目,提高代码的可维护性和简洁性。仓库地址:&lt;https://github.com/khellang/Scrutor&gt;
420 5
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
367 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
开发框架 算法 中间件
ASP.NET Core 中的速率限制中间件
在ASP.NET Core中,速率限制中间件用于控制客户端请求速率,防止服务器过载并提高安全性。通过`AddRateLimiter`注册服务,并配置不同策略如固定窗口、滑动窗口、令牌桶和并发限制。这些策略可在全局、控制器或动作级别应用,支持自定义响应处理。使用中间件`UseRateLimiter`启用限流功能,并可通过属性禁用特定控制器或动作的限流。这有助于有效保护API免受滥用和过载。 欢迎关注我的公众号:Net分享 (239字符)
353 1
|
开发框架 缓存 .NET
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
416 3
|
监控 网络安全 调度
Quartz.Net整合NetCore3.1,部署到IIS服务器上后台定时Job不被调度的解决方案
解决Quartz.NET在.NET Core 3.1应用中部署到IIS服务器上不被调度的问题,通常需要综合考虑应用配置、IIS设置、日志分析等多个方面。采用上述策略,结合细致的测试和监控,可以有效地提高定时任务的稳定性和可靠性。在实施任何更改后,务必进行充分的测试,以验证问题是否得到解决,并监控生产环境的表现,确保长期稳定性。
1285 1
|
5月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
439 10
|
5月前
|
运维 安全 Ubuntu
阿里云渠道商:服务器操作系统怎么选?
阿里云提供丰富操作系统镜像,涵盖Windows与主流Linux发行版。选型需综合技术兼容性、运维成本、安全稳定等因素。推荐Alibaba Cloud Linux、Ubuntu等用于Web与容器场景,Windows Server支撑.NET应用。建议优先选用LTS版本并进行测试验证,通过标准化镜像管理提升部署效率与一致性。
|
5月前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享
阿里云4核8G服务器价格因实例类型而异,经济型e实例约159元/月,计算型c9i约371元/月,按小时计费最低0.45元。实际购买享折扣,1年最高可省至1578元,附主流ECS实例及CPU型号参考。
599 8
|
5月前
|
存储 监控 安全
阿里云渠道商:云服务器价格有什么变动?
阿里云带宽与存储费用呈基础资源降价、增值服务差异化趋势。企业应结合业务特点,通过阶梯计价、智能分层、弹性带宽等策略优化成本,借助云监控与预算预警机制,实现高效、可控的云资源管理。