加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 上传文件并验证文件扩展名和文件大小MVC 5

发布时间:2020-12-16 03:52:24 所属栏目:asp.Net 来源:网络整理
导读:我使用下面的代码,以便上传和检查文件扩展名和文件大小 更新2 调节器 public ActionResult Create([Bind(Include = "anak_ID,Pubdate,kind,title,file,details,link")] HttpPostedFileBase file,announcement announcement) { if (ModelState.IsValid) { db.
我使用下面的代码,以便上传和检查文件扩展名和文件大小

更新2
调节器

public ActionResult Create([Bind(Include = "anak_ID,Pubdate,kind,title,file,details,link")] HttpPostedFileBase file,announcement announcement)
    {
        if (ModelState.IsValid)
        {
            db.announcement.Add(announcement);
            db.SaveChanges();
            TempData["notice"] = "Data saved";

            var allowedExtensions = new[] { ".pdf",".zip",".rar" };

            if (file!= null && file.ContentLength > 0)
            {
                var checkextension = Path.GetExtension(file.FileName).ToLower();


                if (itm.Contains(checkextension))
                    {
                        var extension = Path.GetExtension(file.FileName);
                        var path = Path.Combine(Server.MapPath("~/Content/AnnFiles/" + "announcement_" + announcement.anak_ID + extension));

                        //save File
                        file.SaveAs(path);

                        //prepere announcement
                        announcement.file= @"announcement_" + announcement.anak_ID + extension;


                        //Code for Save data to announcement.

                        db.SaveChanges();
                        TempData["notice"] = "OK! the file is uploaded";
                    }
                    else
                    {

                        TempData["notice"] = "Select pdf or zip or rar less than 20Μ";

                    }

            }

            return RedirectToAction("Create",announcement);


        }

        return View(announcement);
    }

创建视图文件字段.

<div class="form-group">
        @Html.LabelFor(model => model.file,htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-8">
            @Html.EditorFor(model => model.file,new { htmlAttributes = new { @class = "input-file",type = "file",name = "file"} })

        </div>
    </div>

创建视图(我显示消息的部分).

@if (TempData["notice"] != null)
    {
        <div class="alert alert-danger fade in">
            <a href="#" class="close" data-dismiss="alert">&times;</a>
            @TempData["notice"]
        </div>
    }

它将记录保存在db中但在文件字段中保存“System.Web.HttpPostedFileWrapper”

当我更改if语句时,问题就开始了

if (file != null && file .ContentLength > 0)

if (file != null && file .ContentLength > 0 && allowedExtensions.Contains(Path.GetExtension(file .FileName).ToLower()) && file .ContentLength <= (20 * 1024))

所以检查文件扩展名和文件大小.

另一个问题是它总是显示消息
“选择pdf或zip或rar小于20M”并保存记录.我因为System.Web.HttpPostedFileWrapper值而退出.我想要实现的是当我选择不允许的扩展名和表中的文件名时,不保存记录.
先感谢您

解决方法

看看这些代码.

添加.png进行测试,你可以删除它.

if (ModelState.IsValid)
{ 
   var allowedExtensions = new[] { ".pdf",".rar" };
                var checkextension = Path.GetExtension(file.FileName).ToLower();

                if (!allowedExtensions.Contains(checkextension))
                {
                    TempData["notice"] = "Select pdf or zip or rar less than 20Μ";
                }

                foreach (var itm in allowedExtensions)
                {
                    if (itm.Contains(checkextension))
                    {
                        db.announcement.Add(announcement);
                        dbo.SaveChanges();
                    }
                }

                if (file != null && file.ContentLength > 0)
                {
                    foreach (var itm in allowedExtensions)
                    {
                        if (itm.Contains(checkextension))
                        {
                            var extension = Path.GetExtension(file.FileName);
                            var path = Path.Combine(Server.MapPath("~/Content/AnnFiles/" + "announcement_" + announcement.anak_ID + extension));

                            //save File
                            file.SaveAs(path);

                            //prepere announcement
                            announcement.file = @"announcement_" + announcement.anak_ID + extension;


                            //Code for Save data to announcement.

                            db.SaveChanges();
                            TempData["notice"] = "OK! the file is uploaded";
                        }
                    }

                }
            }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读