.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 上传文件到本地服务器的介绍,做此记录,如有帮助,欢迎点赞关注收藏!

目录
相关文章
|
1月前
|
存储 开发框架 JSON
ASP.NET Core OData 9 正式发布
【10月更文挑战第8天】Microsoft 在 2024 年 8 月 30 日宣布推出 ASP.NET Core OData 9,此版本与 .NET 8 的 OData 库保持一致,改进了数据编码以符合 OData 规范,并放弃了对旧版 .NET Framework 的支持,仅支持 .NET 8 及更高版本。新版本引入了更快的 JSON 编写器 `System.Text.UTF8JsonWriter`,优化了内存使用和序列化速度。
|
29天前
|
监控 网络安全 调度
Quartz.Net整合NetCore3.1,部署到IIS服务器上后台定时Job不被调度的解决方案
解决Quartz.NET在.NET Core 3.1应用中部署到IIS服务器上不被调度的问题,通常需要综合考虑应用配置、IIS设置、日志分析等多个方面。采用上述策略,结合细致的测试和监控,可以有效地提高定时任务的稳定性和可靠性。在实施任何更改后,务必进行充分的测试,以验证问题是否得到解决,并监控生产环境的表现,确保长期稳定性。
46 1
|
1月前
|
网络协议 Unix Linux
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
|
1月前
SecureCRT 通过xftp命令行上传文件到服务器上
SecureCRT 通过xftp命令行上传文件到服务器上
99 1
|
2月前
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
|
2月前
|
开发框架 .NET 中间件
ASP.NET Core Web 开发浅谈
本文介绍ASP.NET Core,一个轻量级、开源的跨平台框架,专为构建高性能Web应用设计。通过简单步骤,你将学会创建首个Web应用。文章还深入探讨了路由配置、依赖注入及安全性配置等常见问题,并提供了实用示例代码以助于理解与避免错误,帮助开发者更好地掌握ASP.NET Core的核心概念。
92 3
|
1月前
|
开发框架 JavaScript 前端开发
一个适用于 ASP.NET Core 的轻量级插件框架
一个适用于 ASP.NET Core 的轻量级插件框架
|
开发框架 前端开发 .NET
ASP.NET Core 核心特性学习笔记「下」
ASP.NET Core 核心特性学习笔记「下」
|
开发框架 前端开发 中间件
ASP.NET Core 核心特性学习笔记「上」
ASP.NET Core 核心特性学习笔记「上」
|
SQL 机器学习/深度学习 Cloud Native
.NET 云原生架构师训练营(模块二 基础巩固 EF Core 更新和迁移)--学习笔记
- 状态 - 自动变更检测 - 不查询删除和更新 - 并发
251 0
.NET 云原生架构师训练营(模块二 基础巩固 EF Core 更新和迁移)--学习笔记

热门文章

最新文章