ASP.NET Core 上传文件两种方式

两种方式实际:一种是提交表单 另一种是使用AJAX前端请求方式上传

前端: 

  <form method="post" enctype="multipart/form-data" asp-controller="Home" asp-action="UploadFiles">
        <div class="form-group">
            <div class="col-md-10">
                <p>Upload one or more files using this form:</p>
                <input type="file" id="files" name="files" multiple />
            </div>
        </div>
        <div class="form-group">
            <div id="info" class="col-md-10">@Html.Raw(ViewBag.Message)</div>
        </div>
        <div class="form-group">
            <div class="col-md-10">
                <input type="submit" value="服务器方式上传" />
                <input type="button" id="upload" name="upload" value="AJAX方式上传" />
            </div>
        </div>
    </form>

 

后台:

 

/// <summary>
        /// 表单提交上传 通过IFormFile参数获取上传文件信息
        /// </summary>
        /// <param name="files"></param>
        /// <returns></returns>
        [HttpPost]
        public IActionResult UploadFiles(List<IFormFile> files)
        {
            long size = 0;
            StringBuilder stringBuilder = new StringBuilder();
            foreach (var file in files)
            {
                //var fileName = file.FileName;
                var fileName = ContentDispositionHeaderValue
                                .Parse(file.ContentDisposition)
                                .Name
                                .Trim('"');
                var fileDir = Path.Combine(_hostingEnv.WebRootPath, "UploadFiles");
                if (!Directory.Exists(fileDir))
                {
                    Directory.CreateDirectory(fileDir);
                }
                string filePath = fileDir + $@"\{fileName}";
                size += file.Length;
                using (FileStream fs = System.IO.File.Create(filePath))
                {
                    file.CopyTo(fs);
                    fs.Flush();
                }
                stringBuilder.AppendLine($"文件\"{fileName}\" /{size}字节上传成功 <br/>");
            }
            stringBuilder.AppendLine($"共{files.Count}个文件 /{size}字节上传成功! <br/>");
            ViewBag.Message = stringBuilder.ToString();
            return View();
        }

        /// <summary>
        /// AJAX请求上传,通过Request.Form.Files获取上传文件信息
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        public JsonResult AjaxUploadFiles()
        {
            long size = 0;
            var files = Request.Form.Files;
            StringBuilder stringBuilder = new StringBuilder();
            foreach (var file in files)
            {
                //var fileName = file.FileName;
                var fileName = ContentDispositionHeaderValue
                                .Parse(file.ContentDisposition)
                                .Name
                                .Trim('"');
                var fileDir = Path.Combine(_hostingEnv.WebRootPath, "UploadFiles");
                if (!Directory.Exists(fileDir))
                {
                    Directory.CreateDirectory(fileDir);
                }
                string filePath = fileDir + $@"\{fileName}";
                size += file.Length;
                using (FileStream fs = System.IO.File.Create(filePath))
                {
                    file.CopyTo(fs);
                    fs.Flush();
                }
                stringBuilder.AppendLine($"文件\"{fileName}\" /{size}字节上传成功 <br/>");
            }
            stringBuilder.AppendLine($"共{files.Count}个文件 /{size}字节上传成功! <br/>");
            ViewBag.Message = stringBuilder.ToString();
            return Json(new {
                msg= stringBuilder.ToString()
            });
        }
 

转载于:https://my.oschina.net/guanxinsui/blog/1575916

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值