我有一個表格上傳多個文件:檢查是否至少有一個文件被上傳PHP
<?php
$num_uploads = 3;
$num = 0;
while($num < $num_uploads)
{
echo '<div><input name="userfile[]" type="file" /></div>';
$num++;
}
?>
我如何檢查是否至少有一個文件是用PHP或JavaScript提交?
我有一個表格上傳多個文件:檢查是否至少有一個文件被上傳PHP
<?php
$num_uploads = 3;
$num = 0;
while($num < $num_uploads)
{
echo '<div><input name="userfile[]" type="file" /></div>';
$num++;
}
?>
我如何檢查是否至少有一個文件是用PHP或JavaScript提交?
鑑於您如何構建表單,您必須考慮PHP構建文件數組的方式。
foreach($_FILES['userfile']['error'] as $key => $err) {
if ($err === UPLOAD_ERR_OK) {
... got at least one file ...
}
}
出於某種原因魯鈍,而不是內$_FILES
它自己單獨的子陣列中存儲的每個文件的上傳數據,選擇採用PHP,而不是傳播每個單獨的錯誤/名/ tmp_name的值的/ etc ...在正常的類別像這樣:
$_FILES = array(
'userfile' => array(
'name' => array(
0 => 'name of file #1'
1 => "name of file #2'
etc...
),
'tmp_name' => array(
0 => 'temp name of file #1'
1 => 'temp name of file #2'
etc.. etc... etc..
)
);
一個更加合理的和可以理解的版本會一直
$_FILES = array(
'userfile' => array(
0 => array(
'name' => 'name of file #1'
'tmp_name' => 'temp name of file #1'
...
),
1 => array(
'name' => 'name of file #2'
'tmp_name' => 'temp name of file #2'
...
但是,唉,PHP已經再次揹負世界用過於複雜和愚蠢笨拙。
<?php
if (count($_FILES)) {
// at least 1 file
}
?>
試試這個,
$i = 0;
foreach ($_FILES as $file){
if($file['size'] > 0){
$i++;
}
}
現在如果$i > 0
至少一個文件被上傳。 $i
是上傳的文件總數。
如果用戶想要上傳零字節文件?請檢查'$ file ['error'] === UPLOAD_ERR_OK',如果上傳正常工作,則無論文件大小如何,都將保證爲真。 – 2011-04-10 02:33:29
這不是PHP,而是你。這是你命名你的輸入。所以,只怪你自己 – 2011-04-10 03:27:44
我不會這樣命名我的輸入。但是,這並沒有改變這個事實,即這是一種無法獲得文件細節的方式。 – 2011-04-10 13:54:50