如何在 apache、php 和 JavaScript 的视频分片上传中处理超过 48MB 的文件
该问题主要涉及文件切片上传的实现,当文件大小超过 48MB 时会出现问题。以下是针对此问题的解决步骤:
1. JavaScript 前端代码问题
检查前端 JavaScript 代码中 FormData 的使用方法。发现 FormData 只在构造函数中初始化一次,导致每个切片都累积了前面切片的请求数据。
立即学习“PHP免费学习笔记(深入)”;
解决方案:
将 FormData 的初始化和 append 操作移至 sendFile 函数内,或使用 set 方法代替 append。这样可以确保每个切片都发送独立的请求数据。
2. Apache 配置
此处问题主要不是由 Apache 服务器造成的,而是由 php-fpm 中的 FcgidMaxRequestLen 配置引起。这个配置限制了每个请求允许的最大请求体大小。
解决方案:
根据需要调整 FcgidMaxRequestLen 配置以支持更大的请求体。然而,应注意,该设置也会影响其他 PHP 脚本,因此需要权衡取舍。
3. PHP 后端代码问题
后端 PHP 代码中以打开文件读取的方式合并文件可能会导致大文件时的内存不足问题。
解决方案:
使用更适合于大文件合并的方法,例如流或块状写入。
4. 响应日志问题
如果您无法找到日志中的错误消息,请查看 access.log 和 Error.log 文件,以查找任何与上传过程相关的记录。
5. 参考内容
所示参考网站被标记为内容农场,建议屏蔽或寻找更可靠的信息来源。