0

我有一个网站,在这里我需要实现一个 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歌曲的好代码

提前致谢

4

2 回答 2

1

根据PHP 文档,上传错误1意味着文件太大并且超过了预设的 PHP 最大允许上传文件大小。

您的代码的逻辑流程也是向后的 - 您应该检查的第一件事是['error']参数,然后再执行其他任何操作。如果上传失败(或不存在),您可能无法获得有效的文件名,但您仍然可以继续进行,就好像一切正​​常。同样,您相信用户不会提供虚假文件名,并使用该用户提供的文件名作为上传安全的基础。伪造该文件名是微不足道的,允许他们上传他们想要的任何内容,只需重命名nastyvirus.exegoodsong.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...
于 2012-09-10T05:16:40.910 回答
0

您需要设置以下值以增加文件上传大小

file_uploadsile_uploads
upload_max_filesize
max_input_time
memory_limit
max_execution_time
post_max_size

干杯

于 2012-09-10T05:17:31.817 回答