我只想上传扩展名为.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'];
这似乎是字符串大小写比较的情况。以较低或较高格式进行比较应该有效。
$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>