四 ASP.Net Core MVC上传文件实例

ASP.Net Core MVC上传文件实例

一 创建From表单元素

1.我们在对应的视图文件里(.cshtml)中编写一下代码。asp-action="upload"表示要请求的控制器方法,未指明控制器时默认访问当前文件所对应的控制器,method="post"表明请求方式为post,enctype属性表示以formdata形式提交表单数据。
input标签中的name属性较为重要,一定需要有,在控制器中通过name属性的值获取文件对象,这里的name属性值为upload。

<form asp-action="upload" method="post" enctype="multipart/form-data">
    <input type="file" id="upload" name="upload"/>
    <button type="submit">提交</button>
</form>

二 创建控制器Action

        public IActionResult upload(string upload)
        {
            //指定文件上传的存储路径,一般情况下统一指定
            string FilePath = AppDomain.CurrentDomain.BaseDirectory+"\\UploadFiles\\";
            try
            {
                var file = Request.Form.Files["upload"];
                Stream stream = file.OpenReadStream();
                //获取后缀名
                var arr = file.FileName.Split('.');
                string postfix = arr[arr.Length - 1];

                //判断存储路径是否存在,如果不存在则创建
                if (!Directory.Exists(FilePath))
                {
                    Directory.CreateDirectory(FilePath);
                }
                
                //创建新文件名
                string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + "." + postfix;
                FileStream fileStream = new FileStream(FilePath + "//" + fileName, FileMode.Create, FileAccess.Write);
                var bytes = new byte[stream.Length];
                // 写入字节数组,流太长时建议循环写入
                stream.Read(bytes, 0, (int)stream.Length);
                fileStream.Write(bytes, 0, bytes.Length);
                fileStream.Close();

                //ViewBag.upload = upload;

                //返回JSON对象,JsonData为一个ViewModel,大家可根据情况自行定义
                JsonData jsonData = new JsonData { Message = "上传完成", Flage = true, State = 200 };
                return Json(jsonData);
            }
            catch (Exception ex)
            {
                string log = FilePath + "//" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";

                if (!System.IO.File.Exists(log))
                {
                    System.IO.File.Create(log);
                }
                System.IO.File.WriteAllText(log, ex.Message);
                return NotFound();
            }
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值