我有一個表格將文件上傳到服務器,在下面給出:PHP多文件上傳問題
<form action="/upload/" method="post" enctype="multipart/form-data">
<? foreach($this->devices as $d): ?>
<input type="checkbox" name="check_list[]" value="<?=$d['id']?>"/>
<?=$d['site']?>
<? endforeach ?>
Select Directory:
<select name="optone" size="1" onchange="setOptions(document.myform.optone.options[document.myform.optone.selectedIndex].value);">
<option value="0">Select the directory</option>
<option value="usr">/usr</option>
</select>
Select subdirectory:
<select name="opttwo" size="1">
<option value=""></option>
</select>
Choose files to upload: <input type="file" id="files" name="files[]" onchange="filesProcess(this.files);" /><br />
<output id="list"></output>
<input type="submit" value="Update" style="align:center"/>
</form>
上傳功能如下:
$count=count($_FILES['files']['name']);
$i=0;
if(!empty($_POST['check_list']))
{
foreach($_POST['check_list'] as $check)
{
$dir=$_POST['optone'];
$subdir=$_POST['opttwo'];
$dir_folder=$dir."_".$subdir;
exec(mkdir("firmware_update/".$check."/",0777));
exec(mkdir("firmware_update/".$check."/".$dir_folder."/",0777));
while($i<$count)
{
$f=$_FILES['files']['tmp_name'][$i];
$name=$_FILES['files']['name'][$i];
$path="firmware_update/".$check."/".$dir_folder."/".$name;
move_uploaded_file($f,$path);
$i++;
}
}
}
據形式,我需要從複選框(例如:56,68等)中選擇網站,從下拉菜單中選擇一個目錄(例如:usr,bin),從第二個下拉菜單中選擇一個子目錄(例如:usr等)以及要上傳的文件。上傳功能運行良好,除了一個小問題。
我們選擇的所有文件應該上傳到不同的文件夾。但是上面的代碼僅僅將文件上傳到第一個文件夾。 例如:如果我們選中複選框56和68,目錄usr和子目錄bin以及文件名是test.php。文件test.php應該上傳到56/usr_bin /和68/usr_bin。但是現在代碼只能用於第一個(56/usr_bin /)。我在哪裏犯錯? 任何幫助,應該感激!
'EXEC(MKDIR( 「firmware_update /".$檢查。」/」 $ dir_folder。 「/」,0777));'爲什麼這裏有'$ dir_folder'?然後再次在'$ path'處設置 – 2013-04-04 05:04:42
$ dir_folder會給出像usr_bin這樣的值。我可以看到56/usr_bin /和68/usr_bin。但是test.php只能在第一個餡餅56/usr_bin /中。 – NewPHP 2013-04-04 05:06:41
但我設置了$ i = 0。我試過4個複選框,但文件只上傳到第一個! – NewPHP 2013-04-04 05:12:24