.mp3 文件类型上传

2023-11-30

我正在开发一个 PHP 上传脚本,它允许 .mp3 文件上传等。我创建了一个数组,指定允许的文件类型(包括 mp3),并将最大上传限制设置为 500MB:

// define a constant for the maximum upload size
define ('MAX_FILE_SIZE', 5120000);

// create an array of permitted MIME types
$permitted = array('application/msword', 'application/pdf', 'text/plain', 'text/rtf', 'image/gif', 'image/jpeg', 'image/pjpeg', 'image/png', 'image/tiff', 'application/zip', 'audio/mpeg', 'audio/mpeg3', 'audio/x-mpeg-3', 'video/mpeg', 'video/mp4', 'video/quicktime', 'video/x-ms-wmv', 'application/x-rar-compressed');

到目前为止,在测试中,所有指定的文件类型均已成功上传,但由于某种原因,它出现了 .mp3 错误。正如你在上面看到的,我已经包含了audio/mpeg、audio/mpeg3和audio/x-mpeg-3,但它们似乎都没有什么区别。

有人可以建议问题可能是什么,并指出允许 .mp3 上传所需的音频类型吗?

Thanks

Update:我用来运行文件检查的代码如下:

// check that file is within the permitted size
        if ($_FILES['file-upload']['size'][$number] > 0 || $_FILES['file-upload']['size'][$number] <= MAX_FILE_SIZE) {
            $sizeOK = true;
        }

        // check that file is of an permitted MIME type
        foreach ($permitted as $type) {
            if ($type == $_FILES['file-upload']['type'][$number]) {
                $typeOK = true;
                break;
            }
        }

        if ($sizeOK && $typeOK) {
            switch($_FILES['file-upload']['error'][$number]) {
                case 0:
                    // check if a file of the same name has been uploaded
                    if (!file_exists(UPLOAD_DIR.$file)) {
                        // move the file to the upload folder and rename it
                        $success = move_uploaded_file($_FILES['file-upload']['tmp_name'][$number], UPLOAD_DIR.$file);
                    }
                    else {
                        // strip the extension off the upload filename
                        $filetypes = array('/\.doc$/', '/\.pdf$/', '/\.txt$/', '/\.rtf$/', '/\.gif$/', '/\.jpg$/', '/\.jpeg$/', '/\.png$/', '/\.tiff$/', '/\.mpeg$/', '/\.mpg$/', '/\.mp4$/', '/\.mov$/', '/\.wmv$/', '/\.zip$/', '/\.rar$/', '/\.mp3$/');
                        $name = preg_replace($filetypes, '', $file);
                        // get the position of the final period in the filename
                        $period = strrpos($file, '.');
                        // use substr() to get the filename extension
                        // it starts one character after the period
                        $filenameExtension = substr($file, $period+1);
                        // get the next filename    
                        $newName = getNextFilename(UPLOAD_DIR, $name, $filenameExtension); 
                        $success = move_uploaded_file($_FILES['file-upload']['tmp_name'][$number], UPLOAD_DIR.$newName);
                    }
                    if ($success) {
                        $result[] = "$file uploaded successfully";
                    }
                    else {
                        $result[] = "Error uploading $file. Please try again.";
                    }
                    break;
                case 3:
                    $result[] = "Error uploading $file. Please try again.";
                default:
                    $result[] = "System error uploading $file. Contact webmaster.";
            }
        }
        elseif ($_FILES['file-upload']['error'][$number] == 4) {
            $result[] = 'No file selected';
        }
        else {
            $result[] = "$file cannot be uploaded. Maximum size: $max. Acceptable file types: doc, pdf, txt, rtf, gif, jpg, png, tiff, mpeg, mpg, mp3, mp4, mov, wmv, zip, rar.";
        }

我得到的底部结果告诉我文件大小错误或扩展名不允许。

更新2:我已经运行了 _FILES 数组的 print_r 以希望提供更多信息。结果是:

大批 ( [文件上传] => 数组 ( [名称] => 数组 ( [0] => 莫扎特.mp3 [1] => [2] => )

        [type] => Array
            (
                [0] => audio/mpg
                [1] => 
                [2] => 
            )

        [tmp_name] => Array
            (
                [0] => /Applications/MAMP/tmp/php/phpgBtlBy
                [1] => 
                [2] => 
            )

        [error] => Array
            (
                [0] => 0
                [1] => 4
                [2] => 4
            )

        [size] => Array
            (
                [0] => 75050
                [1] => 0
                [2] => 0
            )

    )

)


MAX_FILE_SIZE 是一个以字节为单位的值

5120000 不是 500 MB。我算了一下,有5MB。

您还需要检查是否没有超过 php.ini 文件中的“post_max_size”和“upload_max_size”变量

其次,mp3 可以是以下任何 mimetypes

  • 音频/mpeg
  • 音频/x-mpeg
  • 音频/mp3
  • 音频/x-mp3
  • 音频/mpeg3
  • 音频/x-mpeg3
  • 音频/mpg
  • 音频/x-mpg
  • 音频/x-mpegaudio

http://filex.com/file-extension/MP3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.mp3 文件类型上传 的相关文章

  • PDO 和 Microsoft SQL:必须声明表变量“@P1”

    我正在尝试使用 PDO 中的绑定从 Microsoft SQL 数据库中选择一些条目 我正在使用的代码看起来与我在文档中找到的代码类似 但是 当我运行它时 我收到以下警告 警告 PDOStatement execute pdostateme
  • 用于分页的php示例脚本[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 任何人都可以建议一个好的分页 php 脚本 其中人们想要分页显示数据库中的大量项目 以下链接可以帮助您
  • HTML 表单 POST 到 PHP 页面 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 好的 我创
  • 如何为 Lumen 的封闭路线指定路线名称?

    您好 我有以下流明路线 router gt get end function Illuminate Http Request request use router controller router gt app gt make App H
  • PHP/MySQL:检索邻接列表模型中的单个路径

    有没有什么有效的方法可以在不限制深度的情况下根据节点的ID检索邻接列表模型中的单个路径 就像如果我有一个名为 Banana 的节点的 ID 我可以获得以下路径 Food gt Fruits gt Banana 如果不可能的话也不是什么大问题
  • 基于 PHP 的 CSV 编辑器? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道用 PHP 编写的在线 CSV 编辑器允许用户打开 编辑和保存给定的 CSV 文件 我能找到的只
  • 在 symfony2 中为特定控制器设置 max_execution_time

    Using ini set 我可以扩展最大执行时间一个脚本的 在Symfony2 我可以添加ini set to web app php and web app dev php将增加的执行时间应用于所有控制器 但在这种情况下 我只想扩展最大
  • Symfony php.ini Debian

    我在 Oracle VM VirtualBox 上使用 Debian 7 amd64 LAMP 服务器 我正在尝试安装 Symfony 但遇到了一些小问题 当我运行命令时 php my project name app check php
  • 一次将多个值插入MySQL [重复]

    这个问题在这里已经有答案了 谁能解释一下为什么这个 PHP MySQL 不起作用 基本上我需要从表单中一次插入大量行 因此会有多个名称字段 多个短 中 长字段等 我收到此错误 Notice Undefined variable Short1
  • 如何在 Laravel 5 中处理嵌套的 JSON 对象请求?

    我们在 Laravel 5 和 AngularJs Ionic 中运行此 Web 服务来处理 Web 当我们将请求从 Web 客户端 发送到 Web 服务 后端 时 我们传递了嵌套的 JSON 对象 我们在读取服务器端父对象下的所有子对象时
  • WAMP 不显示目录列表中的图标

    过去 我通过 vmware 处理 PHP 代码 但最近我决定转而通过 WAMP 在 Windows 8 1 上 在本地进行处理 我创建了一个空文件夹tests in the www folder 然后在我的浏览器上输入http localh
  • 登录后所有页面都应该是https吗?

    这有点难以解释 但我会尽力 有一个网站 每个页面上都有登录表单 其中包含用户名 密码字段 这些页面未使用 SSL 用户填写用户名 密码并提交表单后 表单将被发送到 https 的身份验证页面 对于这种情况我有几个疑问 向 https 页面提
  • URL 重写帮助

    RewriteEngine on RewriteCond REQUEST URI index php RewriteRule index php q 1 L 这应该将任何 url 重写为 index php q url 并且它可以工作 反正
  • Yii2 DropDownList Onchange 更改自动完成小部件“源”属性?

    我已经尝试过这个 yii2 依赖的自动完成小部件 https stackoverflow com questions 27025791 yii2 dependent autocomplete widget 但我不知道为什么它不起作用 这是我
  • 使用 DOM 获取 div 的内容(包括子标签)

    我正在使用 DOM 来获取 div 标签的内容 但内部 html 部分未显示 功能是 dom new DOMDocument libxml use internal errors true dom gt loadHTMLFile url l
  • 使 div 的大小与其内部图像的大小相同

    我有一个带有以下代码的div HTML div img src img logo png div CSS div imgContainer width 250px height 250px padding 13px 问题是用户可以编辑图像大
  • sqlsrv_num_rows 不返回任何值

    我正在尝试获取查询中返回的行数 while 循环遍历结果有效 但由于某种原因 sqlsrv num rows 不返回任何值 result SELECT from dtable WHERE id2 apple query sqlsrv que
  • 如何显示不同页眉的页面? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在为我的学校项目开发网站 但我遇到了一个问题 我在每个页面上显示一个标题 我的标题之一包含登录表单 另一标题包含用户名 搜索栏等 问题是
  • NodeJS 和 PHP (Laravel) 集成用于 Socket.IO 实时聊天

    目前我有一个我写过的网站PHP通过Laravel 框架 我已经使用写了一个实时聊天nodeJS with 套接字IO and Express现在我想做的是将它集成到我已经编写的 Laravel 网站中 问题是聊天必须在主页中 当前由 Lar
  • PHP - 查找和比较日期

    你好 我有 foreach 我可以在其中获取数据库中的事件数据 我使用数据库中的日期名称 例如 event date 我需要在一个 div 中比较具有相同日期和输出的操作 例如我有这个事件 活动一 9 月 13 日 活动二 9 月 1 日

随机推荐

  • 使用 Python 获取 Windows 版本

    当我在控制台 CMD 中输入 winver 时 我将获得我的Windows版本 内部版本号左边的四个数字 例如 1803 1903 1909 2004 20H2 但是我怎样才能在Python中获得我的Windows版本呢 我已经尝试过 im
  • Django:无法导入模块

    我正在尝试在我的views py 中导入一个模块 from django shortcuts import render Create your views here from viewcreator import Builder impo
  • iPhone - UILocalNotification 作为警报

    即使我的 iPhone 应用程序处于后台 我如何使用 UILocalNotification 每天晚上 8 点显示我的闹钟 Set the fireDate到晚上 8 点并设置repeatInterval to NSDayCalendarU
  • 将 N 列的数据框转换为两个“堆叠”列的数据框

    你好堆栈社区 我正在从事网络分析工作 并且有一个数据重塑问题 我的原始数据以一系列列的形式出现 每列都是 源 和 目标 对 最终的数据框需要由 源 和 目标 两列组成 请注意 这些对是交错的 因为它们的源和目标像在有向网络中一样链接 请参阅
  • 使用 vbscript 更改控制台标题

    有没有办法改变cmd标题 我写了一个vbs程序 但dos标题很糟糕 名称为 c windows system32 cscript exe 我尝试一下 标题 the name 和 标题 姓名 但两者都不起作用 感谢帮助 AlexK您指向的链接
  • 如何覆盖循环内的可变字符串?

    我的示例稍作修改The Rust Book 中的猜谜游戏教程 第一次迭代后 循环似乎无法正确读取用户对可变字符串的输入 您能找出以下代码中关于以下内容的问题吗 mut input text extern crate rand use ran
  • 通道发送是否是 goroutine 调度的抢占点?

    从我对Go调度器的理解来看 Go调度算法是部分先发制人 当 goroutine 调用函数或阻塞 I O 时 会发生 goroutine 切换 向通道发送消息时是否会发生 goroutine 切换 goroutine A ch lt mess
  • PHP 正则表达式,忽略交替语句中的第一个分组

    我试图弄清楚如何使用 preg match 捕获一条语句 如果另一条语句不存在 示例文本 div h1 strong Citing Your Sources strong h1 div 因为 pagetitle
  • 如何将应用程序路径传递给Azure批处理中的任务

    我正在使用 Azure 批处理 我有一个需要在计算节点上执行的exe 我在任务窗口的天蓝色门户中使用此路径 cmd c AZ BATCH APP PACKAGE MyAppCreateRG CreateRG exe args HelloRG
  • 什么是 -D 编译器标志 C++(clang、GNU、MSVC)

    好吧 我假设 D前缀表示 define无论它后面跟着什么变量名 但是我找不到任何有关编译器标志的 makefile 功能的文档 CXX clang DTHISISPREPROCESSORVARIABLE So DTHISISPREPROCE
  • 剧作家使用 JavaScript (Node) 将变量传递给 eval

    注意 这是针对 Playwright 浏览器 API 如 puppeteer 我试图找到页面上的所有元素 然后想将这些元素过滤为值 这些值具有特定的选择器 css 类等 我遇到的问题是我无法将外部变量传递到 eval 函数中 以便我的 CS
  • 如何调整 OpenEars 错误识别

    我在我的应用程序中使用了 OpenEars 只需识别字母表中的 a 到 z 即可 但它在识别字母方面的识别能力比识别单词的能力差 那么 我如何使用我的声音模型来提高 OpenEars 的识别度 以及如何使用 OpenEars 来识别一些特殊
  • 根据时间序列中的条件对行进行分组并忽略错误值

    我有一组具有不同采样间隔的动物位置 我想要做的是对采样间隔符合特定条件 例如低于特定值 的序列进行分组和标记 这是一个修订版这个问题被标记为重复项this one 这个修订后的问题的不同之处在于 所有不符合标准的值都应该被忽略 而不是被标记
  • Bing 搜索 API - 如何本地化结果?

    默认情况下如何使用斯洛文尼亚语搜索结果 我们的服务器有德国 IP Bing API 首先自动显示德国结果 我已经尝试了文档中描述的一些参数 但到目前为止它们都不起作用 Thanks 您是否尝试过设置市场选项 根据这个示例页面 你应该尝试这样
  • boost karma 中的生成器指令列行为不一致

    我正在编写一个 karma 生成器来生成 HTML 页面 并且在使用列指令时遇到不一致的行为 这很可能是我对其工作原理的理解 基本上我正在生成一个网格 它要求我在数据每出现两次后插入一些分隔符 以下是我用来进行测试运行的基本程序 inclu
  • Perl - 包含相对路径中的包,其中包含相对路径中的另一个包?

    我有三个文件 multiFindBinTest pl use FindBin use lib FindBin Bin mod2 use pack2 mod1 pack1 pm package pack1 1 mod2 pack2 pm us
  • Typescript:如何创建一个类型,它是界面的键,但只有字符串的键

    假设我有这个界面 interface MyInterface val1 string val2 string val3 number val4 string val5 Date 我想创建一个类型 它是 MyInterface 的键 但只有字
  • 使用 FFMPEG 从 IP 摄像机读取 RTCP 数据包

    我正在使用 ffmpeg C 库 我需要拦截来自摄像头的 RTCP 数据包 以便从发送者报告中获取时间戳 ffmpeg 中是否有任何方法或结构可以为我提供此信息 我完全陷入困境 但我无法解决这个问题 任何帮助将不胜感激 提前致谢 最后我不得
  • 如何根据用户登录隐藏某些功能? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我们想在 Tomcat 中隐藏一些基于用户登录的代码功能 我们正在使用基本身份验证 有什么建议么 IF你的意思只是隐藏一些资源 具体取决于用户是否登录那么这只是限制对某些页面的访
  • .mp3 文件类型上传

    我正在开发一个 PHP 上传脚本 它允许 mp3 文件上传等 我创建了一个数组 指定允许的文件类型 包括 mp3 并将最大上传限制设置为 500MB define a constant for the maximum upload size