我有一个网站,在这里我需要实现一个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歌曲的好代码
提前感谢
根据PHP文档,上传错误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...
您需要设置以下值来增加文件上传大小
file_uploadsile_uploads
upload_max_filesize
max_input_time
memory_limit
max_execution_time
post_max_size
干杯