如何仅在验证后在 php 中上传 .mp3 文件,我的 .wav 文件很容易上传

Posted

技术标签:

【中文标题】如何仅在验证后在 php 中上传 .mp3 文件,我的 .wav 文件很容易上传【英文标题】:How to upload .mp3 file in php only after validation,my .wav file gets uploaded easily 【发布时间】:2013-01-22 13:50:07 【问题描述】:
if ((($_FILES["myfile"]["type"] == "audio/mp3") ||
     ($_FILES["myfile"]["type"] == "audio/wav")) &&
    ($_FILES["myfile"]["size"] < 20000000)) 

    if (move_uploaded_file($_FILES['myfile']['tmp_name'], $target_path) )
    
        $result1=1;
    

【问题讨论】:

将此 mime 用于 mp3:audio/mpeg ["type"] 值由浏览器提供:它可能是伪造的、错误的,甚至丢失。不要相信它! 【参考方案1】:

只有print $_FILES["myfile"]["type"]; 用于真正的 mp3 文件,然后复制该值并使用它而不是音频/mp3,因为 mp3 的 MIME 类型不会是“音频/mp3”,我认为它是 audio/mpeg

请检查这个Link,因为它不建议依赖浏览器发送的$_FILES["myfile"]["type"]

【讨论】:

感谢您的回答:)【参考方案2】:

两件事。

检查.mp3 文件的大小。 检查.mp3 的文件类型,如果它实际上是audio/mp3。试试print_r($_FILES);

$type = $_FILES["myfile"]["type"];
$size = $_FILES["myfile"]["size"];

if( ( ($type == "audio/mp3") || ($type == "audio/wav") ) && ($size < 20000000)) 
    if(move_uploaded_file($_FILES['myfile']['tmp_name'], $target_path) ) 
        $result1=1;
    

希望对你有帮助。

【讨论】:

抱歉没有解释清楚,但我的意思是我只想上传 .wav 和 .mp3 文件,使用上面我给出的代码,.wav 文件很容易上传,但 .mp3文件没有上传..【参考方案3】:

您可以通过评估上传文件的扩展名来检查,或者如果您想检查文件级别,那么您可以使用其中一个梨包https://pear.php.net/package/MP3_ID

【讨论】:

以上是关于如何仅在验证后在 php 中上传 .mp3 文件,我的 .wav 文件很容易上传的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PHP 中验证通过 URL 上传的文件

上传文件夹中的mp3文件?

jsp中如何计算上传的mp3文件的时长

如何在 Qt (QMediaPlayer) 上上传 Mp3 文件?

PHP - 将 .wav 文件转换为 .mp3?

PHP获取音频mp3文件时长或音频文件其它参数属性