我想用html和php上传一个音频文件。它总是返回错误消息(无效文件)。请帮助我。我正在关注此url-https://forums.digitalpoint.com/threads/mp3-file-upload-in-php.1174500/;
http://p2p.wrox.com/php-how/53040-how-upload-mp3-file-using-php.html
这是我正在使用的代码-
<form enctype="multipart/form-data" action="sound_action.php" method="POST">
<input type="hidden" name="MAX_FILE_SIZE"/>
Choose a file to upload: <input name="file" type="file" /><br />
<input type="submit" value="Upload File" />
</form>
<?php
if ((($_FILES["file"]["type"] == "audio/mp3")
|| ($_FILES["file"]["type"] == "audio/mp4")
|| ($_FILES["file"]["type"] == "audio/wav"))
&& ($_FILES["file"]["size"] < 1000000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>
mp3的mime类型为audio/mpeg
,对于mp4,必须使用video/mp4
,wave为audio/x-wav
或audio/wav
。
此外,您应该增加文件大小,因为此参数以字节为单位,1000000小于1mb。也许您还需要增加php.ini中的上传文件大小
有一种验证文件的替代方法,但这是检查文件验证的基本方法,不确定文件是否具有正确的not类型。
$valid_extension = array('.mp3', '.mp4', '.wav');
$file_extension = strtolower( strrchr( $_FILES["file"]["name"], "." ) );
if( in_array( $file_extension, $valid_extension ) &&
$_FILES["file"]["size"] < 1000000 ){
// Rest Logic Here
}
else
{
print_r( $_FILES );
}
注意:
这是一个基本的文件验证。您缺少一个if子句:
if(isset($_POST['name_submit_button']))
{
//Whole Logic of program
}