2016-01-20 123 views
-2

我只想上傳一個擴展名爲.mp3的文件。如何僅上傳具有特定擴展名的文件?

我試着上傳文件與此代碼:

index.php

<form action="upload.php" method="post" id="myForm" enctype="multipart/form-data"> 
<label for="file">Filename:</label> 

<input type="file" name="file" id="file"><br> 
<input type="submit" name="submit" class="btn btn-success" value="Upload Image"> 
</form> 

upload.php

$temp = explode(".", $_FILES["file"]["name"]); 
$extension = end($temp); 
if ($extension == "mp3"){ 
    $target = "upload/"; 
    move_uploaded_file($_FILES["file"]["tmp_name"], $target. $_FILES["file"]["name"]); 
} 
else { 
    echo "Failed"; 
} 

這有什麼錯我的代碼?

+0

$ _FILES [「file」] [「name」]的值是什麼? –

+1

您可以定義'它不工作'請 –

+0

你的意思是,你總是會遇到''失敗''? –

回答

0

試試下面的代碼:

$name = $_FILES["file"]["name"]; 
$extension = end((explode(".", $name))); //extra() to prevent notice 

if ($extension == "mp3"){ 
    $target = "upload/"; 
    move_uploaded_file($_FILES["file"]["tmp_name"], $target. $_FILES["file"]["name"]); 
} 
else { 
    echo "Failed"; 
} 

這應該工作。確保將適當的值輸入$_FILES["file"]["name"]

您也可以使用pathinfo()。例如:

$path_parts = pathinfo($_FILES["file"]["name"]); 
$extension = $path_parts['extension']; 
+2

OP爲什麼要「嘗試這個」?一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,而且是爲了將來SO的訪問者。 –

0

這似乎是字符串大小寫比較的一種情況。以較低或較高的格式進行比較應該可行。

$temp = end(explode(".", $_FILES["file"]["name"])); 
$extension = strtolower($temp); 
if ($extension == "mp3"){ 
    $target = "upload/"; 
    move_uploaded_file($_FILES["file"]["tmp_name"], $target. $_FILES["file"]["name"]); 
} 
else { 
    echo "Failed"; 
} 
+1

OP爲什麼要「嘗試這個」?一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,而且是爲了將來SO的訪問者。 –

+0

嗯,也許我認爲角色比較可能是這裏的問題。我已經解釋了我想提出的建議。 我會盡量在將來更具體。我是StackOverflow的新手,所以請隨身攜帶。 –

0

我覺得OP已經錯過了表單標籤中的表單類型。以下是測試代碼:

<?php 
if(!empty($_POST)){ 
    $temp = explode(".", $_FILES["file"]["name"]); 
    $extension = end($temp); 
    if ($extension == "mp3"){ 
     $target = "upload/"; 
    move_uploaded_file($_FILES["file"]["tmp_name"], $target. $_FILES["file"]["name"]); 
    } 
    else { 
     echo "Failed"; 
    } 
} 
?> 

<form method="post" enctype="multipart/form-data"> 
<input type='file' name='file'/> 
<input type='submit' name='submit'/> 
</form> 
相關問題