以下に示すサーバーにファイルをアップロードするためのフォームがあります。
<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)、2 番目のドロップ ダウン メニューからサブディレクトリ (例: usr など) を選択する必要があります。およびアップロードするファイル。アップロード機能は、小さな問題を除いてうまく機能しています。
選択したすべてのファイルは、別のフォルダーにアップロードする必要があります。ただし、上記のコードはファイルを最初のフォルダーにのみアップロードするだけです。例: チェックボックス 56 と 68 を選択した場合、ディレクトリ usr とサブディレクトリ bin で、ファイル名は test.php です。ファイル test.php を 56/usr_bin/ および 68/usr_bin にアップロードする必要があります。しかし今、コードは最初 (56/usr_bin/) に対してのみ機能しています。どこで間違えたのですか?どんな助けでも大歓迎です!