【问题标题】:Limit total upload size of all the files in uploadify限制uploadify中所有文件的总上传大小
【发布时间】:2013-12-16 07:20:13
【问题描述】:

我正在使用 uploadify 上传文件。如果所有文件的总上传大小大于 10MB,我想抛出错误并停止提交/上传表单。

我浏览了uploadify http://www.uploadify.com/documentation/的文档,发现“fileSizeLimit”限制了单个文件的文件大小。但我想要所有文件的总上传大小。

有人可以建议我如何做到这一点吗?下面是我的代码

<script>
$(function() {
$('#file_upload').uploadify({    
    'formData' : {
        'timestamp' : '<?php echo $timestamp;?>',
        'token'     : '<?php echo md5('unique_salt' . $timestamp);?>'
    },
    'swf'      : 'uploadify.swf',
    'uploader' : 'uploadify.php',

    'auto'     : false,        
    'buttonText' : 'Upload Document',
    'fileTypeExts' : '<?php echo $allowedFileExts; ?>',
    'fileSizeLimit' : '10MB',
    'onQueueComplete' : function(event,data) {            
        document.someForm.submit();
        document.someForm.reset();
    }
});
});
</script>
<form id="someForm" name="someForm" action="test.php" method="post" enctype="multipart/form-data">
<input id="file_upload" name="file_upload" type="file" multiple="true"/>
<a href="javascript:$('#file_upload').uploadify('cancel','*');">Clear Queue</a>
<input onclick="$('#file_upload').uploadify('upload','*')" type="button" id="submitbtn" name="submitbtn" value="Submit" />
<div id="queue"></div>
</form>   

【问题讨论】:

  • 在那里取一个全局变量,然后添加尺寸
  • 嘿ankit。谢谢你的快速反应。我试过你的建议。我可以触发错误。但无法停止提交/上传表单。当总大小超过 10MB 时,我还尝试隐藏提交按钮。但我想始终显示提交按钮,因为在我的表单上文件上传不是强制性的。
  • 您好,我实际上无法估计它们在库中返回的内容,但您可能会使用 onselect 浏览下面的链接。检查文件对象下的 console.log(file) 中的内容。 (大多数情况下,您将能够获得文件数组 + 大小)。将所有尺寸保存在数组中并求和。 uploadify.com/documentation/uploadify/onselect
  • 嗨,aditya,您可以发布您尝试过的代码吗?

标签: jquery uploadify


【解决方案1】:

最后,我为我的问题找到了自己的解决方案。感谢大家的支持。我的代码如下。可能对某人有帮助。

<script type="text/javascript">   
<?php $timestamp = time();?>
var totalfilesize = 0;
$(function() {
var queueSize = 0;
$('#file_upload').uploadify({    
    'formData' : {
        'timestamp' : '<?php echo $timestamp;?>',
        'token'     : '<?php echo md5('unique_salt' . $timestamp);?>'
    },
    'swf'      : 'uploadify.swf',
    'uploader' : 'uploadify.php',

    'auto'     : false,        
    'buttonText' : 'Upload Document',
    'fileTypeExts' : '<?php echo $allowedFileExts; ?>',
    'fileSizeLimit' : '10MB',        
    'onSelectError' : function() {
        alert('The file ' + file.name + ' returned an error and was not added to the queue.');
    },
    'onSelect' : function(file){
        queueSize++;
        $('#queuesize').val(queueSize);
        totalfilesize = totalfilesize+file.size;
        chkfilesize(totalfilesize);
    },
    'onCancel' : function(file) { 
        queueSize--;
        $('#queuesize').val(queueSize);
        totalfilesize = totalfilesize-file.size;
        chkfilesize(totalfilesize);             
    },
    'onUploadStart' : function(file) {            
    },
    'onUploadSuccess' : function(file, data, response) {
        //$("#response").html(data);            
        $('#uploadedfiles').val($('#uploadedfiles').val() + data);            
    },
    'onQueueComplete' : function(event,data) {            
        document.someForm.submit();
        $('#queuesize').val('0');
        $('#uploadedfiles').val('');            
        document.someForm.reset();

    }
});
 });

function chkfilesize(totalfilesize){
if(totalfilesize > 10485760){        
    $('#fileerror').html('File Size exceeds 10MB');
    $('#fileerror').show();
}else{        
    $('#fileerror').html('');
    $('#fileerror').hide();
}

}
function submitForm() { 
var validatefileresp = validatefile();    
if(validatefileresp === true){
    $('#file_upload').uploadify('upload','*');
}
}

function validatefile(){  
if ($("#queuesize").val() == 0) {
    document.someForm.submit();
    $('#uploadedfiles').val('');
    $('#queuesize').val('0');        
    document.someForm.reset();        
}else{
    if(totalfilesize > 10485760){
        $('#fileerror').html('File Size exceeds 10MB');
        return false;
    }else{
        return true;
    }

}

}
</script>
<form id="someForm" name="someForm" action="test.php" method="post" enctype="multipart/form-data">
First name: <input name="fname" type="text" /><br>
Last name: <input name="lname" type="text" /><br><br><br>
Upload only doc,pdf,docx,xls,xlsx,txt,rtf format files<br>
<input id="file_upload" name="file_upload" type="file" multiple="true"/>
<input type="hidden" name="uploadedfiles" id="uploadedfiles" value=""  />
<input type="hidden" name="queuesize" id="queuesize" value="0" />
<br><br>
<a href="javascript:$('#file_upload').uploadify('cancel','*');">Clear Queue</a>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input onclick="javascript:submitForm();" type="button" id="submitbtn" name="submitbtn" value="Submit" />
<div id="fileerror"></div>
<div id="queue"></div>

<div id="response"></div>
</form>   

【讨论】:

    【解决方案2】:

    试试sizeLimit

    看看这一行**

    else if (d.type ==="File Size")
         alert(c.name+' '+d.type+' Limit: '+Math.round(d.sizeLimit/1024)+'KB');** 
    

    在:

     onError: function (a, b, c, d) {
             if (d.status == 404)
                alert('Could not find upload script. Use a path relative to: '+'<?= getcwd() ?>');
             else if (d.type === "HTTP")
                alert('error aaa'+d.type+": "+d.status);
             else if (d.type ==="File Size")
                alert(c.name+' '+d.type+' Limit: '+Math.round(d.sizeLimit/1024)+'KB');
             else
                alert('error '+d.type+": "+d.text);
    

    【讨论】:

      猜你喜欢
      • 2012-12-13
      • 2023-03-06
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-30
      • 2014-08-25
      • 2011-01-29
      相关资源
      最近更新 更多