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

目录
相关文章
|
23天前
|
消息中间件 前端开发 小程序
一个基于.NET Core构建的简单、跨平台、模块化的商城系统
今天大姚给大家分享一个基于.NET Core构建的简单、跨平台、模块化、完全开源免费(MIT License)的商城系统:Module Shop。
|
23天前
|
算法 C# 数据库
【干货】一份10万字免费的C#/.NET/.NET Core面试宝典
C#/.NET/.NET Core相关技术常见面试题汇总,不仅仅为了面试而学习,更多的是查漏补缺、扩充知识面和大家共同学习进步。该知识库主要由自己平时学习实践总结、网上优秀文章资料收集(这一部分会标注来源)和社区小伙伴提供三部分组成。该份基础面试宝典完全免费,发布两年来收获了广大.NET小伙伴的好评,我会持续更新和改进,欢迎关注我的公众号【追逐时光者】第一时间获取最新更新的面试题内容。
|
23天前
|
数据可视化 网络协议 C#
C#/.NET/.NET Core优秀项目和框架2024年3月简报
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排名不分先后,都是十分优秀的开源项目和框架,每周定期更新分享(欢迎关注公众号:追逐时光者,第一时间获取每周精选分享资讯🔔)。
|
4月前
|
开发框架 前端开发 JavaScript
盘点72个ASP.NET Core源码Net爱好者不容错过
盘点72个ASP.NET Core源码Net爱好者不容错过
72 0
|
4月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
38 0
|
4月前
|
开发框架 JavaScript .NET
ASP.NET Core的超级大BUG
ASP.NET Core的超级大BUG
43 0
|
2月前
|
缓存 网络协议 数据可视化
WinSCP下载安装并实现远程SSH本地服务器上传文件
WinSCP下载安装并实现远程SSH本地服务器上传文件
|
4月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
44 0
|
6天前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
16 0
|
21天前
|
Linux API iOS开发
.net core 优势
.NET Core 的优势:跨平台兼容(Windows, macOS, Linux)及容器支持,高性能,支持并行版本控制,丰富的新增API,以及开源。
25 4