2013-12-16 3 views
1

Я использую загрузку для загрузки файлов. Я хотел бы бросить ошибку и прекратить подачу/загрузку формы, если общий размер загрузки всех файлов превышает 10 МБ.Ограничить общий размер выгрузки всех файлов при загрузке

Я просмотрел документ 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> 
+0

Возьмите глобальную переменную там, а затем добавить размеры –

+0

эй ANKIT. thx для быстрого реагирования. Я попробовал ур. Я могу вызвать ошибку. но не смог прекратить подачу/загрузку формы. Я также попытался скрыть кнопку отправки, если общий размер превышает 10 МБ. Но я хочу показать кнопку отправки всегда, поскольку загрузка файла не является обязательной для моей формы. –

+0

Привет, я не могу оценить, что они возвращают в библиотеке, но вы, вероятно, перейдете по ссылке ниже, используя onselect. Проверьте, что у вас есть в console.log (файл) под объектом файла. (В большинстве случаев вы сможете получить массив файлов + размер). Держите все размеры в массиве и суммируйте. http://www.uploadify.com/documentation/uploadify/onselect/ –

ответ

0

Atlast, я нашел свое решение для своей проблемы. Спасибо всем за вашу поддержку. Мой код ниже. может быть полезно для кого-то.

<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> 
+0

код не работает – fedrick

0

Попробуйте 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); 
Смежные вопросы