2016-09-25 11 views
0

Im new to PHPとまだ学習していますが、このようなことができるかどうかを知りたいと思います。私は以下のような基本的なHTMLフォームを持っています。HTMLチェックボックスに基づいて特定のフォルダにPHPをアップロードする

また、以下のような基本的なアップロードPHPドキュメントもあります。

<?php 

if ($_FILES["file"]["size"] < 2097152) { 
    if ($_FILES["file"]["error"] > 0) { 
     header('Location: /'); 
    }else { 
     echo "Original Name: " . $_FILES["file"]["name"] . "<br>"; 
     echo "File Type: " . $_FILES["file"]["type"] . "<br>"; 
     echo "File Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
     $randprefix = hash('ripemd160', openssl_random_pseudo_bytes(32), false); 
     $filepath = "upload/" . $randprefix . $_FILES["file"]["name"]; 
     if (file_exists($filepath)) { 
      echo $filepath . " already exists. "; 
     }else { 
      move_uploaded_file($_FILES["file"]["tmp_name"], $filepath); 
      echo "Link to file: " . '<a href = "' . $filepath . '">' . $filepath . '</a>' ; 

     } 
    } 
}else { 
    echo "File too large."; 
} 
?> 

何私が求めていること、であることは、ファイルを確認すると、そのHTMLフォーム上のチェックボックスを持つことが可能であるファイルチェックを外し、「プライベート」とするときという名前のフォルダにアップロードしますという名前のフォルダにアップロードします"パブリック"。ありがとうございました。

+0

はい!しかし、自動ではありません。テストをコーディングし、適切な場所に 'move_uploaded_files()'を書く必要があります。 – RiggsFolly

+0

良いコードインデックスは読書に役立ちます。もっと重要なのは**デバッグ** – RiggsFolly

+0

@GrizPwnzです。私のコードに**説明**を与えて、同じヘルプが必要な他の人に役立つようにしてください。ありがとう:) –

答えて

2

このような条件を使用すると、フォームの送信後にチェックボックスの値を取得できるようになります。

if(isset($_POST['check'])) 
{ 
    $filepath = "upload/private" . $randprefix . $_FILES["file"]["name"]; 
} 
else 
{ 
    $filepath = "upload/public" . $randprefix . $_FILES["file"]["name"]; 
} 

あなたはupload.phpページでチェックして、あそこにフォルダを設定することができるようにチェックボックスの入力タイプため名を配置する必要があります。

置き換えます

<label><input type="checkbox" id="cb" value="checkb">Make Private.</label> 

で:

<label><input type="checkbox" id="cb" value="checkb" name="check">Make Private.</label> 

説明:ユーザーが、それは、チェックボックスの値をチェックし、それが意志提出時のチェックボックスを選択し$filepathupload/privateとするか、データを送信しているユーザーがチェックボックスをオンにしていない場合、チェックボックスをオンにして、コードをセルごとに変更しますチェックボックスの値を指定します。あなたが選択できるのはmove_upload_file()です。

+0

@RajdeepPaul。コードは、 'isset()'関数のチェック目的で更新されました。 –

+0

素晴らしい!コメントを削除する必要があります。 –

+0

ありがとうございます!私は本当に助けに感謝します! – GrizPwnz

0
<form action="upload.php" method="post" enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="file" id="file"><br> 
<input type="submit" name="submit" value="Submit"> 
<label><input type="checkbox" id="cb" name="checkb" value="checkb">Make Private.</label> 
</form> 
<?php 
if ($_FILES["file"]["size"] < 2097152) 
{ 
    if ($_FILES["file"]["error"] > 0) 
    { 
    header('Location: /'); 
    } 
    else 
    { 
    echo "Original Name: " . $_FILES["file"]["name"] . "<br>"; 
    echo "File Type: " . $_FILES["file"]["type"] . "<br>"; 
    echo "File Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
    $randprefix = hash('ripemd160', openssl_random_pseudo_bytes(32), false); 
    if($_POST['checkb'] == "checkb") 
    { 
     $filepath = "private/" . $randprefix . $_FILES["file"]["name"]; 
    } 
    else 
    { 
     $filepath = "upload/" . $randprefix . $_FILES["file"]["name"]; 
    } 
    if (file_exists($filepath)) 
    { 
     echo $filepath . " already exists. "; 
    } 
else 
{ 
    move_uploaded_file($_FILES["file"]["tmp_name"], $filepath); 
    echo "Link to file: " . '<a href = "' . $filepath . '">' . $filepath . '</a>' ; 

    } 
    } 
} 
else 
{ 
    echo "File too large."; 
} 
?> 

私はそれをテストしてコピーするのは難しいと思います!

関連する問題