美文网首页
.net web core 如何编码实现文件上传功能

.net web core 如何编码实现文件上传功能

作者: HapplyFox | 来源:发表于2021-05-13 15:53 被阅读0次

    前言

    在进行Web前后端分析开始时,我们经常会碰到文件上传的需求。上传用户头像,上传认证材料、审核材料等,这些都可以归类为文件上传功能。

    今天主要把自己在开发过程中的心得进行一个整理,供大家学习。

    开启静态文件中间件

    默认情况下,静态文件(如 HTML、CSS、图像和 JavaScript)是 ASP.NET Core 应用直接提供给客户端的资产。

    开启静态文件访问,即可以通过浏览器地址输入http://127.0.0.1:8080/images/1.png访问图片或其他文件的方式。需要在中间件中进行配置。

    StartUp.cs中Configure方法增加一行代码。即添加默认的静态文件中间件。

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {    
        app.UseStaticFiles();
    }
    

    详情参考官方文档:

    https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/static-files?view=aspnetcore-3.1

    文件上传功能

    前后台分离项目,所以创建WebApi项目。新建一个控制器,文件名FileController,开始进行一个简单的文件上传编码。

    public class FileController : ControllerBase
    {
        private static IWebHostEnvironment _webHostingEnvironment;
    
        public FileController(IWebHostEnvironment hostingEnvironment)
        {
            _webHostingEnvironment = hostingEnvironment;
        }
    
        public IActionResult UploadFile(IFormFile formFile)
        {
            //var formFile = Request.Form.Files[0];//获取请求发送过来的文件
    
            var webRootPath = _webHostingEnvironment.WebRootPath;//应用程序根目录
            string dirPath = webRootPath + "/UploadFile/" + DateTime.Now.ToString("yyyyMMdd");
            //判断保存的文件夹是否存在,不存在创建
            if (!Directory.Exists(dirPath))
            {
                Directory.CreateDirectory(dirPath);
            }
    
            if (formFile == null)
            {
                //保存的文件名称可能存在重复,所以需要在后台对文件进行重命名
                string fileExtesion = Path.GetExtension(formFile.FileName);
                string fileName = Path.GetFileName(formFile.FileName) + "_" + Guid.NewGuid().ToString() + "." + fileExtesion;
    
                //保存文件
                using (var fs = System.IO.File.Create(webRootPath + "/" + fileName))
                {
                    formFile.CopyTo(fs);
                }
    
                return new JsonResult(new { success = true, errMsg = "文件上传成功" });
            }
            else
            {
                return new JsonResult(new { success = false, errMsg = "未检测到上传的文件" });
            }
    
        }
    
    }
    

    参考

    ASP.NET Core单文件和多文件上传并保存到服务端

    博客

    The END

    本文到此结束,希望对你有帮助 😃

    更多精彩 技术文章汇总在我的 公众号程序员工具集 ,持续更新,欢迎关注订阅收藏。

    如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。

    相关文章

      网友评论

          本文标题:.net web core 如何编码实现文件上传功能

          本文链接:https://www.haomeiwen.com/subject/egcxjltx.html