我想驗證所有我上傳的文件,實際上我做文件大小和文件類型驗證。如果驗證失敗的任何文件,我記錄該錯誤消息的特定文件。我正在使用每個循環進行文件處理,如果文件大小和文件類型驗證的條件,但問題是隻有第一條件評估和第二如果塊未經測試。兩個如果在每個循環內。任何幫助將不勝感激...在PHP中的多個文件上傳驗證不工作
代碼
public function validate_my_files(){
foreach($this->files_from_user_validateit['name'] as $key => $value){
$name = $this->files_from_user_validateit['name'][$key];
$size = $this->files_from_user_validateit['size'][$key];
$type = $this->files_from_user_validateit['type'][$key];
//$error[$key] = $this->files_from_user_validateit['error'][$key];
//$tmp_name[$key] = $this->files_from_user_validateit['tmp_name'][$key];
//not allowed file extensions
$not_allowed_ext = array('php','js','asp','aspx','py','c','c++','jsp','perl','cfg','css','java',
'json');
//lets find the extension of the filename
$est = explode('.',$name);
$ext = $est[count($est)-1];
if(in_array($ext,$not_allowed_ext)){
//putting in session for later message
$_SESSION['ext'][] = $name;
}
//lets check for file size now, lets not allow file greater than 50MB
if($size > 47185920){
$_SESSION['size'][] = $name;
}
}
print_r($_SESSION);die();
}
只有文件擴展名,如果被測試,而如果條件大小不工作?
編輯
不幸的是巨大的我的上傳表單存在問題。稍後選擇的文件只能由$ _FILES處理,我正在使用多個文件上傳並使用Java腳本在同一頁的表中顯示選定的文件。比方說,我首先選擇5個文件(表格中顯示的5個文件),然後再次選擇3個文件,現在總共有8個文件放在表格上。但是隻有第三次選擇的最後3個文件在$ _FILES數組中可用。請任何人有這種解決方案
重新編輯
ID「myfiles的」是從輸入文件中的字段保存多個文件。 Id'dataS'是由下面給定的JS創建的表格。 如果'tot'是表中文件總大小的跨度。 輸入表格:
<form id="uploadform" method="post" action="" enctype="multipart/form-data">
<div id="datas"></div>
<div id="tot"><h3>TOTAL SIZE:</h3> <span id="zise">0 MB</span></div>
<div id="addfiles"><input type="file" name="addfiles[]" value="Add Files" multiple="multiple" id="myfiles" ></div>
<input type="submit" name="sbmtfile" style="color:green;font-size: 17px;">
</form>
我的JS:
<script type="text/javascript">
var s = 1;
var totsize = 0;
myfiles.onchange = function(){
var a = document.getElementById('myfiles').files;
var b = document.getElementById('datas');
var total = document.getElementById('tot');//for table title
var c = document.createElement('TABLE');
c.className = 'showtable';
c.border = '1px';
c.cellspacing = '0';
c.cellpadding = '2';
c.width = '100%'
for(var i = 0; i < a.length; i++){
var f = document.createElement('TR');
c.appendChild(f);
//for total file size
totsize = totsize + a[i].size;
var r = document.createElement('TD');
r.align = 'center';
r.width = '152px';
f.appendChild(r);
r.appendChild(document.createTextNode(s++));
var y = document.createElement('TD');
y.align = 'left';
y.width = '610px';
y.appendChild(document.createTextNode(a[i].name));
f.appendChild(y);
var z = document.createElement('TD');
z.align = 'center';
r.width = '152px';
z.appendChild(document.createTextNode(Math.round((a[i].size)/1024)));
f.appendChild(z);
var x = document.createElement('TD');
x.align = 'center';
x.width = '152px';
x.appendChild(document.createTextNode('DELETE'));
f.appendChild(x);
}
b.appendChild(c);
document.getElementById('zise').innerHTML = Math.round((totsize/(1024*1024)))+ ' MB';
}
</script>
是'files_from_user_validateit()'自定義函數?由於您正在檢查'if($ size> 47185920)',它基本上是'if($ this-> files_from_user_validateit ['size'] [$ key];> 47185920)',您需要檢查它返回的值。 – Sean
@Sean($ this-> files_from_user_validateit)包含所有我上傳的文件,即我從表單獲得的文件,即它是一個文件數組,它工作正常,我可以在這裏獲取我上傳的所有文件... – mindre