目錄
突破48MB限制:JS、PHP和Apache視頻切片上傳解決方案
問題:48MB上傳瓶頸
代碼分析與改進
解決方案總結
首頁 後端開發 php教程 使用JS、PHP和Apache進行視頻切片上傳時,如何解決無法上傳48MB以上文件的問題?

使用JS、PHP和Apache進行視頻切片上傳時,如何解決無法上傳48MB以上文件的問題?

Apr 01, 2025 am 11:00 AM
apache 500錯誤

使用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以上文件的問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Stock Market GPT

Stock Market GPT

人工智慧支援投資研究,做出更明智的決策

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

如何在Apache中配置keepalive? 如何在Apache中配置keepalive? Aug 03, 2025 am 07:06 AM

KeepAliveOn啟用持久連接;2.MaxKeepAliveRequests100設置每個連接最大請求數;3.KeepAliveTimeout5設置等待後續請求的超時時間,配置後重啟Apache並使用curl或瀏覽器開發者工具驗證KeepAlive是否生效,以優化服務器性能。

如何解決apache不能將libphp.so加載到服務器中 如何解決apache不能將libphp.so加載到服務器中 Aug 08, 2025 am 06:07 AM

First,verifythelibphp.sofileexistsusingfindorlocatecommands;ifmissing,reinstallPHPwithApachesupportviapackagemanager.2.CheckApacheconfigurationfilesforcorrectLoadModuledirectivepathandremoveduplicates.3.EnsureApacheandPHPversionsandarchitecturesmatch

如何在Apache上安裝讓我們加密SSL證書? 如何在Apache上安裝讓我們加密SSL證書? Aug 04, 2025 am 09:47 AM

安裝Certbot及其Apache插件;2.運行Certbot獲取證書並配置域名;3.可選配置HTTP到HTTPS的自動重定向;4.設置自動續期並通過dry-run測試;5.驗證安裝並確保Apache正常重載配置,證書成功部署後將自動管理續期,整個過程完成後即可實現安全的HTTPS訪問。

Apache配置文件在哪裡? Apache配置文件在哪裡? Aug 08, 2025 am 01:20 AM

Ondebian/ubuntu,themainapacheconfigurationfileis/etc/apache2/apache2.conf,withAdditionalConfigurationsin/etc/apache2/stites-av ailable/and/etc/apache2/conf-abailable/.2.onrhel/centos/fedora,itistyply/etc/etc/httpd/conf/conf/httpd.conf,withextrafilesin/etc/h

什麼是默認的Apache端口? 什麼是默認的Apache端口? Aug 14, 2025 pm 01:02 PM

ThedefaultApacheportforHTTPis80.1.Port80isusedforunencryptedHTTPtrafficandisthestandardforwebserversincludingApache.2.WhenaURLisenteredwithoutaspecifiedport,browsersautomaticallyconnecttoport80.3.ForHTTPStraffic,thedefaultportis443,commonlyconfigured

如何阻止Apache中的IP地址? 如何阻止Apache中的IP地址? Aug 26, 2025 am 08:00 AM

toblockanipinapache2.4 ,usetheRequiredirectivewithinablock,suchasRequireallgrantedRequirenotip192.168.1.100toblockasingleIP,asubnetlike192.168.1,ormultiplespecificIPsbyrepeatingtheRequirenotipline,2.Placetheruleinsidea,,orblockinthevirtualhostconfigu

如何在Windows文件管理器中批量轉換文件格式?高效操作的步驟 如何在Windows文件管理器中批量轉換文件格式?高效操作的步驟 Sep 05, 2025 pm 08:12 PM

Windows文件管理器無法直接批量轉換文件格式,因其僅負責文件管理,不處理文件內容;需借助第三方工具如IrfanView、FFmpeg等實現高效批量轉換,結合文件管理器篩選文件後導入工具,通過圖形界面或命令行完成轉換,其中命令行工具具備自動化、高效率和精確控制優勢,但需注意學習成本、錯誤處理及文件備份。

如何在Apache上託管一個簡單的網站? 如何在Apache上託管一個簡單的網站? Sep 05, 2025 am 05:15 AM

InstallApacheusingpackagemanagercommandsforyourOS,startandenabletheservice.2.Placeyourwebsitefilesinthedefaultdirectory/var/www/html/,setproperownershipandpermissionsbasedonyoursystem(www-dataforUbuntu,apacheforCentOS).3.Optionallyconfigureavirtualho

See all articles