使用JS、PHP和Apache进行视频切片上传时,如何解决无法上传48MB以上文件的问题?

DDD
发布: 2025-03-25 09:40:01
原创
904人浏览过

使用js、php和apache进行视频切片上传时,如何解决无法上传48mb以上文件的问题?

突破48MB限制:JS、PHP和Apache视频切片上传解决方案

在小型项目开发中,处理大文件上传常常会遇到挑战。本文将分享一个实际案例:使用JavaScript、PHP和Apache进行视频切片上传时,如何克服48MB文件大小限制的问题。

问题:48MB上传瓶颈

项目中采用切片上传方案,理论上支持2GB文件,每片1MB,最多2000片。然而,实际测试中,上传超过48MB(约48片)后,后续请求返回500错误。即使调整切片大小为10MB,问题依然存在。

代码分析与改进

JavaScript代码:

原代码中,FormData对象仅初始化一次,导致每次请求都携带所有已上传切片数据,最终超过Apache的fcgidmaxrequestlen限制。

立即学习PHP免费学习笔记(深入)”;

Find JSON Path Online
Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online 193
查看详情 Find JSON Path Online

改进后的JavaScript代码如下,关键在于每次发送请求前重新实例化FormData对象:

function videoFileUpload() {
    const LENGTH = 1024 * 1024; // 1MB
    let start = 0;
    let end = start + LENGTH;
    let blob_num = 1;
    let is_stop = 0;

    this.start = function () {
        const file = files.files[0];
        const blob = cutFile(file);
        sendFile(blob, file);
        blob_num++;
    }

    // ... (其余代码保持不变) ...

    function sendFile(blob, file) {
        if (is_stop === 0) {
            const xhr = new XMLHttpRequest();
            const form_data = new FormData(); // 关键:每次重新实例化FormData

            const total_blob_num = Math.ceil(file.size / LENGTH);
            form_data.append('file', blob);
            form_data.append('blob_num', blob_num);
            form_data.append('total_blob_num', total_blob_num);
            form_data.append('file_name', file.name);

            xhr.open('POST', '/upload.php', false);
            // ... (其余代码保持不变) ...
        }
    }

    // ... (其余代码保持不变) ...
}
登录后复制

PHP代码:

PHP代码中的文件合并逻辑也可能存在内存效率问题。对于超大文件,建议采用流式处理,避免一次性将所有切片读入内存。 (此处省略PHP代码,因为原代码未提供明显的内存泄露或效率问题,改进重点在JS端)

解决方案总结

问题的核心在于JavaScript代码中FormData对象的重复使用。通过每次请求前重新实例化FormData对象,避免了数据累积,从而解决了48MB上传限制。 对于PHP端,如果处理大文件时出现内存问题,则需要进一步优化文件合并逻辑,采用流式处理方式。 此改进方案有效解决了大文件上传问题,确保了视频切片上传的稳定性和可靠性。

以上就是使用JS、PHP和Apache进行视频切片上传时,如何解决无法上传48MB以上文件的问题?的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号