2016-09-25 85 views
0

即時通訊新的PHP仍然在學習,但我想知道如果我能夠做到這樣的事情。我有一個基本的HTML表單,如下所示。PHP上傳到基於HTML複選框的某個文件夾

<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" value="checkb">Make Private.</label> 
</form> 

還有一個基本的上傳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或者如果用戶在提交他/她的數據時沒有選擇複選框,它將根據sel改變代碼如果是複選框值。所以你可以根據可用的選擇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."; 
} 
?> 

我認爲這是工作我測試它,你沒有問題複製!