1

以下に示すサーバーにファイルをアップロードするためのフォームがあります。

<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/) に対してのみ機能しています。どこで間違えたのですか?どんな助けでも大歓迎です!

4

1 に答える 1