it编程 > 编程语言 > Php

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

17人参与 2025-03-30 Php

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

突破48mb限制:js、php和apache视频切片上传解决方案

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

问题:48mb上传瓶颈

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

代码分析与改进

javascript代码:

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

改进后的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以上文件的问题?的详细内容,更多请关注代码网其它相关文章!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

如何使用PHPExcel库导出Excel文件并设置列宽?

03-30

在CodeIgniter4中配置和使用Redis缓存时,为什么仅仅修改配置文件还不够?

03-30

在PHP 5.4版本中如何使用PHP 5.2的扩展?

03-30

PHP接口中Object类型参数兼容性问题:如何解决“must be compatible with”错误?

03-30

PHP 7.3 OpCache如何高效配置以提升生产环境性能?

03-30

MySQL Update的底层机制是怎样的?大批量数据更新会导致哪些性能和死锁问题?

03-30

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论