Asp.net mvc 4 如果超过特定大小限制,如何防止文件上载?

Asp.net mvc 4 如果超过特定大小限制,如何防止文件上载?,asp.net-mvc-4,file-upload,jquery-file-upload,asyncfileupload,Asp.net Mvc 4,File Upload,Jquery File Upload,Asyncfileupload,在MVC中,我需要对上传文件进行限制,限制大小不应超过5MB 在这里,我只需要在客户端验证和限制超过5MB的大小限制 我能够实现使用ajax文件上传器,但它支持IE10及以上,但我微妙地需要提供对IE9及以上的支持 请指导我如何在客户端或任何替代解决方案进行验证?要检查文件何时上载,可以添加web.config密钥: <add key="maxRequestLength" value="5242880"/> <!-- in Bytes --> 此外,您可以通过以下方式在

在MVC中,我需要对上传文件进行限制,限制大小不应超过5MB

在这里,我只需要在客户端验证和限制超过5MB的大小限制

我能够实现使用ajax文件上传器,但它支持IE10及以上,但我微妙地需要提供对IE9及以上的支持


请指导我如何在客户端或任何替代解决方案进行验证?

要检查文件何时上载,可以添加web.config密钥:

<add key="maxRequestLength" value="5242880"/> <!-- in Bytes -->
此外,您可以通过以下方式在Web.Config中实施站点范围的限制:

<system.web>
    <httpRuntime maxRequestLength="5120" /> <!-- in Kb -->
    ...

...
顶部变量只允许您很好地管理屏幕上的错误

    Check java script/ JQuery validation:
    $('#file_select')[0].files[0], file.size

    check test code here : [Click Here][1]

      [1]: http://jsfiddle.net/rq8nA/

    $("input:file").change(function () {
           if ($(this).val() !== "") {
            var file = $('#file_select')[0].files[0];
               if(file.size > 5000) {
                $('#err').html("Could not upload more than 5kb");           
               }
           }
    });

试试下面的代码

$(function () {

            $("[id*='Attachments_']").change(function () {

                if (undefined != this.files) {
                    var f = this.files[0]
                    var id = this.id;
                    var extArray = new Array("dll", "exe");
                    var ext = f.name.replace(/^.*?\.([a-zA-Z0-9]+)$/, "$1");
                    if (ext == extArray[0] || ext == extArray[1]) {                            
                        alert("System will not allow to upload the files with extenstion(.exe,.dll).Try to upload a different file.");
                        //reset file upload control                            
                        $("#" + this.id).replaceWith($("#" + this.id).clone(true));
                        return false;
                    } 
                    //here I CHECK if the FILE SIZE is bigger than 5 MB (numbers below are in bytes)
                    else if (f.size > 5242880 || f.fileSize > 5242880) {
                        //show an alert to the user
                        alert("Allowed file size exceeded. (Max. 5 MB)");

                        //reset file upload control                            
                        $("#" + this.id).replaceWith($("#" + this.id).clone(true));
                        return false;
                    }
                }
            })
        });

您可以在控制器POST操作中检查ContentLength

 [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(Publication publication)
    {

        if (ModelState.IsValid)
        {
            if (publication.ImageUpload.ContentLength > (9))
            {
                ModelState.AddModelError("ImageData", "File size must be less than xxx MB");
                return View();
            }
            else
            { }

当上传超过5MB时,它只是挂起并显示服务器处理。仅在5 mb时工作正常。但更重要的是,你要陷入困境。所以,只有在到达服务器之前,才需要在客户端进行限制。也许您的服务器有5MB的限制,所以会覆盖任何客户端代码限制。如果你将我文章的第二部分添加到web.cfg,你可以将限制提高到7或8MB,然后在5字节的客户端检查中添加,但是,如何限制客户端的大小限制?谢谢。但是,它能在IE9中工作并且能够获得文件大小吗?Jquery在IE9中工作得很好。遗憾的是,我工作时没有IE9。我今晚确实在家里查对了……)
 [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(Publication publication)
    {

        if (ModelState.IsValid)
        {
            if (publication.ImageUpload.ContentLength > (9))
            {
                ModelState.AddModelError("ImageData", "File size must be less than xxx MB");
                return View();
            }
            else
            { }