2016-01-20 120 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> 
相关问题