2

<cc1:AjaxFileUpload ID="AjaxFileUpload1"  AllowedFileTypes="jpg,jpeg"
runat="server" MaximumNumberOfFiles="4"  OnUploadComplete="AjaxFileUpload1_UploadComplete" 
         />

文件隐藏代码

protected void AjaxFileUpload1_UploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
    {
        if (e.FileSize > 10)
        {
            string filePath = e.FileName;
            AjaxFileUpload1.SaveAs(Server.MapPath(filePath));
        }
        else
        {

        }
    }

我想在文件上传事件之前检查所有文件大小是否不应超过特定值。

4

5 回答 5

3

试试这个方法:

服务器端:

protected void AjaxFileUpload1_UploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
{
    try
    {
        string savePath = MapPath("~/Images/" + e.FileName);
        // dont save file & return if condition not matched.
        if (e.FileSize > 72000) // use same condition in client side code
        {
            return;
        }
        AjaxFileUpload1.SaveAs(savePath);
    }
    catch (Exception ex)    
    {
        throw ex;
    }
}

在客户端:

<script type="text/javascript">
    function UploadComplete(sender, args) {
        var filesize = args.get_fileSize();
        var fileId = args.get_fileId();

        var status = document.getElementById('AjaxFileUpload1_FileItemStatus_' + fileId);
        var container = document.getElementById('AjaxFileUpload1_FileInfoContainer_' + fileId);


        if (filesize > 72000) { // same condition used for server side
            document.getElementById('lblStatus').innerText = "error";
            if (status.innerText) {
                status.innerText = " (Error)";
            }
            if (status.textContent) {
                status.textContent = " (Error)";
            }
            container.style.color = 'Red';
        }
    }
</script>

<cc1:AjaxFileUpload ID="AjaxFileUpload1"  AllowedFileTypes="jpg,jpeg" runat="server" MaximumNumberOfFiles="4"  OnUploadComplete="AjaxFileUpload1_UploadComplete" OnClientUploadComplete="UploadComplete" />

希望这可以帮助!!

于 2013-07-25T20:07:57.813 回答
1
    <script type="text/javascript">
    $(".ajax__fileupload_dropzone").bind("drop", function () {
            checkfilesize();
    });
    $(".ajax__fileupload_queueContainer").bind("click", function () {       
            checkfilesize();
    });  
    $(".ajax__fileupload_uploadbutton").bind("mouseenter", function () {
            checkfilesize();
    });

    function checkfilesize() {
        var total_filesize_num = 0;
        var myElements = $(".filesize");
        if (myElements.length == 0) {
            $(".ajax__fileupload_uploadbutton").css("visibility", "hidden");
            return;
        }
        for (var i = 0; i < myElements.length; i++) {              
            var filesize = myElements.eq(i).html(); //$(".filesize").html();     
            total_filesize_num = total_filesize_num + filesize_tonum(filesize);
        }
        if (total_filesize_num > 5) {
            $(".ajax__fileupload_uploadbutton").css("visibility", "hidden");
            alert('Maximum file size is 5MB only! Please select another one.');
            return;
        } else {
            $(".ajax__fileupload_uploadbutton").css("visibility", "visible");
        }
    }
    function countsumfilesize() {
        var sumfilesize = 0;
        var myElements = $(".filesize");
        for (var i = 0; i < myElements.length; i++) {
            alert(myElements.eq(i).html());
        }
    }
    function filesize_tonum(filesize) {
        var filesize_num = 0;
        if (filesize.indexOf("kb") > 0) {
            var space = filesize.lastIndexOf(" ");
            filesize_num = parseFloat("0." + filesize.substr(0, filesize.length - space + 1));
        }
        else if (filesize.indexOf("MB") > 0) {
            var space = filesize.lastIndexOf(" ");
            filesize_num = parseFloat(filesize.substr(0, filesize.length - space + 1));
        }    
        return filesize_num;
    }

    </script>

<ajaxToolkit:AjaxFileUpload ID="AjaxFileUploadImage" runat="server" OnClientUploadComplete="uploadComplete" MaximumNumberOfFiles="1" AllowedFileTypes="gif,png,jpg,jpeg" onchange="checkfilesize(); return false;" />
于 2014-08-07T08:18:35.360 回答
0

请看下面的代码:

public void afuUpload_UploadedComplete(object sender, AsyncFileUploadEventArgs e)
    {
     try
     {
       string savePath = MapPath("~/Uploads/" + Path.GetFileName(e.filename));
       if (int.Parse(e.filesize) > 3000000)
       {
          return;
       }
       afuUpload.SaveAs(savePath);
     }
     catch (Exception ex)
     {
        throw ex;
     }}
于 2013-07-25T18:02:36.150 回答
0

这个想法是为了防止文件被上传到服务器。在建议的解决方案中,当流代码到达afuUpload_UploadedComplete时,文件已上传到服务器,但尚未记录在您指定的路径中。例如,如果限制是 20 兆字节,而选择的文件是 22 兆字节,当代码到达 时afuUpload_UploadedComplete,已经有 22 兆字节上传到服务器。

寻求的解决方案是在客户端 (JavaScript) 上完成验证,并防止代码到达CodeBehind服务器。

就我而言,我尝试在OnClientUploadComplete超出文件大小限制时生成异常,但它不起作用并且代码仍然达到CodeBehind. 另一个问题是,当异常发生时,JavaScript 函数OnClientUploadError没有触发拦截OnClientUploadComplete函数中产生的异常。

于 2013-12-15T02:56:43.783 回答
0

控制器

  [HttpPost]
 public ActionResult Create(string Album, Photo photo, IEnumerable<HttpPostedFileBase> files, DateTime? datec, string NewAlbum = null)
  {
  .....

     foreach (var file in files)
            {
                decimal sum = file.ContentLength / 1048;
                if (sum > 4000)
                {
                    errorlist2 += "Sorry " + file.FileName + " has exceeded its file limit off 4 MB  <br/>";


                }

            }

   if (errorlist2 != "")
                {
                    ViewBag.Error = errorlist2;
                    return View(photo);
                }

  // we dont want put the message in the loop it will come out on first max limit , rather find all files in excess, then we can pass the message 
  //also make sure your web config is set  for a limit on max size 

//using the normal html multi uploaded

// <input type="file" name="files" id="files" required multiple="multiple" accept=".jpg, .png, .gif" size="4" />
于 2016-09-01T07:50:02.827 回答