十七、.NET CORE上传附件方法(From表单上传)


@model BaseFramePro.Models.Entities.EnvironType @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>上传升级文件</title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link rel="stylesheet" href="~/layuimini/lib/layui-v2.5.5/css/layui.css" media="all"> <link rel="stylesheet" href="~/layuimini/css/public.css" media="all"> </head> <body> <div class="layuimini-container"> <div class="layuimini-main"> <fieldset class="layui-elem-field layui-field-title" style="margin-top: 50px;"> <legend>上传升级文件</legend> </fieldset> @Html.AntiForgeryToken() @*<form class="layui-form" method="post" enctype="multipart/form-data" asp-controller="EnvironUpgrade" asp-action="FileSave" asp-route-id="@Model.TypeID">*@ <form class="layui-form" method="post" enctype="multipart/form-data" action="/api/EnvironUpgrade/FileSave?id=@Model.TypeID" > <div> <div> <div class="layui-form-item"> <label class="layui-form-label">选择升级文件:</label> <div class="layui-input-block"> <input type="file" class="layui-upload-choose" name="files" /> <button class="layui-btn" lay-submit="" type="submit">上传</button> </div> </div> </div> </div> </form> </div> </div> <style type="text/css"> .layui-form-label { width: 100px; } .layui-input-block { margin-left: 130px; } </style> <script src="~/layuimini/lib/layui-v2.5.5/layui.js" charset="utf-8"></script> <script> layui.use(['form', 'layer', 'laydate'], function () { var form = layui.form , $ = layui.jquery , layer = layui.layer; }); </script> </body> </html>

  @Model.TypeID为我的赋值参数,可以换成自己的,或者直接写值

 @*<form class="layui-form" method="post" enctype="multipart/form-data" asp-controller="EnvironUpgrade" asp-action="FileSave" asp-route-id="@Model.TypeID">*@这种也是form的方法
     /// <summary>
        /// 上传升级包(方法1)
        /// </summary>
        /// <param name="files"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        [HttpPost]
        public async Task<IActionResult> FileSave(List<IFormFile> files, string id)
        {
            if (files.Count == 0)
            {
                return Ok(new RtnObj { code = false, msg = "升级文件上传失败,未找到文件", data = "" });
            }
            string filesName = "";
            string suffix = "";
            filesName = DateTime.Now.ToString("yyyyMMddhhmmss");
            IFormFile file = files as IFormFile;
            long size = files.Sum(f => f.Length);
            string folder = webRootPath + "\\FileUpload\\UpgradeFile\\" + id;
            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }
            if (files != null && files.Count > 0)
            {
                //suffix = files[0].FileName.Split('.')[files[0].FileName.Split('.').Length - 1]; 
                suffix = System.IO.Path.GetExtension(files[0].FileName);
                string fileTxt = folder + "\\" + id + "-" + filesName + suffix;
                if (!System.IO.File.Exists(fileTxt))
                {
                    //验证文件是否存在,如果存在删除?
                    //根据具体业务处理
                    //文件名称年月日时分秒基本上不会重复,后期遇到问题可以添加随机数
                }
                foreach (var formFile in files)
                {
                    if (formFile.Length > 0)
                    {
                        using (var stream = new FileStream(fileTxt, FileMode.Create))
                        {
                            await formFile.CopyToAsync(stream);
                        }
                    }
                }
            }
            return Ok(new RtnObj { code = true, msg = "升级文件上传成功", data = "文件名称:" + id + "-" + filesName + suffix });
        }

  

posted @ 2022-04-01 14:43  大型电灯泡  阅读(217)  评论(0编辑  收藏  举报