Php 如何上载仅具有特定扩展名的文件?

Php 如何上载仅具有特定扩展名的文件?,php,file-upload,Php,File Upload,我只想上传一个扩展名为.mp3的文件 我尝试用以下代码上载文件: index.php: 我的代码有什么问题?请尝试以下代码: $name = $_FILES["file"]["name"]; $extension = end((explode(".", $name))); //extra () to prevent notice if ($extension == "mp3"){ $target = "upload/"; move_uploaded_file($_FILES["

我只想上传一个扩展名为.mp3的文件

我尝试用以下代码上载文件:

index.php:

我的代码有什么问题?

请尝试以下代码:

$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";
}
这应该行得通。确保在$\u文件[file][name]中输入正确的值

您也可以使用。例如:

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

这似乎是一个字符串大小写比较的例子。以较低或较高的格式进行比较应该有效

$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";
}

我认为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>

$_FILES[file][name]的值是多少?你能定义它不起作用吗?你的意思是,你总是会失败吗?到目前为止,我没有看到任何明显的语法错误,所以我认为这可能是一个配置错误,即最大文件大小太小。请详细说明你所犯的错误,以便我能摆脱我的不确定性。另一方面,考虑使用输入的属性也在客户端上添加文件扩展限制。为什么OP会尝试这个?一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的访客。OP为什么要尝试这样做?一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的访客。好吧,也许我认为角色比较可能是这里的问题。我已经解释了我想提出的建议。我以后会尽量说得更具体一些。我是StackOverflow的新手,所以请跟我谈谈。
$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";
}
<?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>