ASP.Net Core创建Razor页面上传多个文件(缓冲方式)

本文介绍了如何在ASP.NET Core中实现多文件上传功能。后端通过定义List<IFormFile>属性接收文件,并使用循环逐个保存。前端只需在input标签中添加multiple属性以允许选择多个文件。此外,还提到了如何限制上传文件类型。目前存在的疑问是IFormFile的最大文件大小限制及如何展示文件详细清单。
摘要由CSDN通过智能技术生成

  继续学习如何上传多个文件,有了之前的学习内容,再学习多个文件上传就比较快
  先说后端如何改动。直接定义List<IFormFile>的属性,用于保存前端上传的文件集合,同时在OnPostUploadAsync函数中利用循环逐个保存文件内容,详细的代码如下所示:

		public List<IFormFile> MultiFiles { get; set; }

        public string Result { get; private set; }

        public async Task<IActionResult> OnPostUploadAsync()
        {
            if (!ModelState.IsValid)
            {
                Result = "Please correct the form.";

                return Page();
            }

            foreach(IFormFile formFile in MultiFiles)
            {
                byte[] formFileContent=null;

                try
                {
                    using (var memoryStream = new MemoryStream())
                    {
                        await formFile.CopyToAsync(memoryStream);

                        if (memoryStream.Length == 0)
                        {
                            ModelState.AddModelError(formFile.FileName,"file is empty.");
                        }

                        formFileContent=memoryStream.ToArray();
                    }
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError(formFile.FileName,
                        "file upload failed. " + $"Please contact the Help Desk for support. Error: {ex.HResult}");
                }


                if (!ModelState.IsValid)
                {
                    Result = "Please correct the form.";

                    return Page();
                }
                
                var filePath = Path.Combine(
                    _targetFilePath, formFile.FileName);


                using (var fileStream = System.IO.File.Create(filePath))
                {
                    await fileStream.WriteAsync(formFileContent);
                }   
            }
            

            Result = "File Upload Successfully.";

            return Page();
        }

  前端代码基本保持不变,只是在指定上传文件的input标签内新增multiple属性,该属性规定允许用户输入到 元素的多个值。程序的执行效果见下图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  如果要选择特定类型的文件,可以在指定上传文件的input标签内新增appept属性,并指定上传文件的类型,具体的类型说明见参考文献2.
  还有两个地方没有搞明白,第一是IFormFile最大能上传多大的文件,第二是上传多个文件时,页面上仅显示选择了几个文件,没有列出文件清单,后续还要学学是怎么把文件清单列出来的。

参考文献
[1]https://www.runoob.com/tags/tag-input.html
[2]https://wenku.baidu.com/view/f34420e48aeb172ded630b1c59eef8c75fbf95c3.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值