ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

.net Core 上传文件详解

2021-03-05 12:35:06  阅读:160  来源: 互联网

标签:Core string 文件 fileName 详解 env net 上传


.net core 和.net framework上传文件有很多需要注意的地方
.net framework 上传文件用httppostedfilebase
.net core 上传文件用 IFormFile

一、首先需要配置在startup 中的Configure方法内新增以下代码
app.UseStaticFiles();
而配置Apk下载需要加以下代码,与上面的app.UseStaticFiles()并不冲突

 app.UseStaticFiles(new StaticFileOptions
            {
                //FileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory()),
                //设置不限制content-type 该设置可以下载所有类型的文件,但是不建议这么设置,因为不安全
                //下面设置可以下载apk和nupkg类型的文件
                ContentTypeProvider = new FileExtensionContentTypeProvider(new Dictionary<string, string>
                {
                      { ".apk", "application/vnd.android.package-archive" }
                })
            });

如下图:

如果被限制上传大小,需要在startup 中的ConfigureServices新增如下代码:

   services.Configure<FormOptions>(x =>
            {
                x.MultipartBodyLengthLimit = int.MaxValue;
            });

如下图:

二、上传文件到wwwroot/虚拟目录中,需要在项目内新增一个文件夹,更名为wwwroot
如下图:

三、控制器(UploadController)需要注入IWebHostEnvironment

        private readonly IWebHostEnvironment _env;
        public UploadController(IWebHostEnvironment env)
        {
            _env = env;
        }

如下图:

四、需要在控制器方法配置 [RequestSizeLimit(int.MaxValue)] 上传文件大小限制改为最大值,附上传文件代码

/// <summary>
        /// 上传包文件
        /// </summary>
        /// <param name="files">文件</param>
        /// <param name="VersionCode">版本代码</param>
        /// <param name="Creator">上传人</param>
        /// <returns></returns>
        [HttpPost("UploadPackage")]
        [RequestSizeLimit(int.MaxValue)]
        public async Task<ApiResult> UploadPackage([FromForm(Name = "files")] List<IFormFile> files,
       [FromForm] string VersionCode, [FromForm] string Creator)
        {
            string FileTime = DateTime.Now.ToString("yyyyMMdd");
            string uploadPath = Path.Combine(_env.WebRootPath, "CommonUpLoadFile", FileTime);//上传路径;虚拟目录wwwroot\CommonUpLoadFile\..
            try
            {
                string fileName = string.Empty;
                string QueryPath = string.Empty;
                foreach (var formFile in files)
                {
                    if (formFile.Length > 0)
                    {
                        if (!Directory.Exists(uploadPath)) //不存在则创建路径
                        {
                            Directory.CreateDirectory(uploadPath);  
                        }
                        fileName = formFile.FileName;
                        string savePath = Path.Combine(uploadPath, fileName);//保存文件
                        QueryPath = $"{CU_server.UploadQuery_String}CommonUpLoadFile/{FileTime}/{fileName}";//查询的文件名;CU_server.UploadQuery_String指向虚拟目录wwwroot
                        using (var stream = System.IO.File.Create(savePath))
                        {
                            await formFile.CopyToAsync(stream);
                        }
                    }
                }
                return OkResult("上传成功");
            }
            catch (Exception ex)
            {
                return MessageResult(404, $"上传出现错误,错误原因:{ex.Message}");
            }
        }

如图:

注:附上官方 .NET Core 上传文件文档

PostMan测试截图

欢迎各位大神指点,有用就点个赞吧!

标签:Core,string,文件,fileName,详解,env,net,上传
来源: https://www.cnblogs.com/LaoPaoEr/p/14485474.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有