如何仅上传具有特定扩展名的文件?
我只想上传一个扩展名为.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";
}
这有什么错我的代码?
试试下面的代码:
$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'];
OP为什么要“尝试这个”?一个好的答案***将总是解释所做的事情以及为什么这样做,不仅是为了OP,而且是为了将来SO的访问者。 –
这似乎是字符串大小写比较的一种情况。以较低或较高的格式进行比较应该可行。
$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为什么要“尝试这个”?一个好的答案***将总是解释所做的事情以及为什么这样做,不仅是为了OP,而且是为了将来SO的访问者。 –
嗯,也许我认为角色比较可能是这里的问题。我已经解释了我想提出的建议。 我会尽量在将来更具体。我是StackOverflow的新手,所以请随身携带。 –
我觉得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”]的值是什么? –
您可以定义'它不工作'请 –
你的意思是,你总是会遇到''失败''? –