我有一个网站,在这里我需要实现一个PHP功能来上传一首歌(MP3),并需要播放该歌曲。我做了一个代码。看我的代码
if(trim($_FILES['frmFile']['name'])!=""){
if (($_FILES["frmFile"]["type"] == "audio/mpeg" || $ext=="mp3" || $ext=="MP3")&& ($_FILES["frmFile"]["size"] < 2000000))
{
if ($_FILES["frmFile"]["error"] > 0)
{
$error="Error In Uploading";
exit;
}
else
{
$orgFileNmae=$_FILES['frmFile']['name'];
$uniqname = rand().$fileName.".".$ext;
$uploadfile=$uploaddir.$uniqname;
if(move_uploaded_file($_FILES['frmFile']['tmp_name'], $uploadfile)) {
}
}
}else{
$error="Invalid file";
}
}
我已经从网上下载了一首mp3歌曲,并尝试上传该文件,但它正在显示
上传时出现错误,我打印了文件属性,然后我得到
$_FILES["frmFile"]["error"] =1
然后我只是在vLc中播放下载的代码,其他播放器运行良好。那么为什么这个文件没有正确上传..
我已经打印了上传的文件数组,然后我得到了结果
Array ( [name] => blind_willie.mp3 [type] => [tmp_name] => [error] => 1 [size] => 0 )
有人知道吗?
任何人都有一个很好的代码来上传一首mp3歌曲
提前致谢
答案 0 :(得分:1)
根据PHP docs,上传错误1
表示文件太大,超出了预设的PHP允许的最大上传文件大小。
您的代码的逻辑流程也是向后的 - 您应该检查的第一件事是['error']
参数,在您执行任何其他操作之前。您可能无法获得失败(或不存在)上传的有效文件名,但您仍然可以继续进行,就像一切正常。同样,您相信用户不提供虚假文件名并使用该用户提供的文件名作为上传安全性的基础。只需将nastyvirus.exe
重命名为goodsong.mp3
,就可以伪造文件名,允许他们上传他们想要的任何内容。
if ($_FILES['frmFile']['error'] !== UPLOAD_ERR_OK) {
die("Upload failed with error code " . $_FILES['frmFile']['error']);
}
$finfo = new finfo(FILEINFO_MIME_TYPE);
if($finfo->file($_FILES['frmFile']['tmp_name']) != 'audio/mpeg') {
die("Invalid file type uploaded");
}
etc...
答案 1 :(得分:0)
您需要设置以下值以增加文件上传大小
file_uploadsile_uploads
upload_max_filesize
max_input_time
memory_limit
max_execution_time
post_max_size
干杯