深圳創絡爲客戶做網站(zhàn)時,經常需要開發下載中心或者附件(jiàn)管理(lǐ)及其他(tā)類似的功能,有的時候,客戶需要上傳幾十MB甚至幾百MB的文件(jiàn)到網站(zhàn)中,爲了提高用戶體(tǐ)驗,我們通常會對這種超大(dà)文件(jiàn)進行切片上傳。由于我們長期從(cóng)事(shì)網站(zhàn)開發這個行業,所以不斷的積累經驗,總結教訓,目前對文件(jiàn)切片上傳功能的開發,技術(shù)上已經很成熟,而且現在已經很少遇到文件(jiàn)上傳失敗的情況。今天我們将爲大(dà)家介紹下遠(yuǎn)程服務器上PHP超大(dà)文件(jiàn)切片上傳失敗最常見(jiàn)的原因。
當用戶遇到類似技術(shù)問(wèn)題的時候不需要緊張,請(qǐng)直接聯系創絡科(kē)技獲取技術(shù)支持。絕大(dà)多數情況下,我們已經預見(jiàn)了所有可(kě)能出現的問(wèn)題并做了相(xiàng)應的友好提示,所以,可(kě)能用戶自(zì)己并不知道文件(jiàn)上傳的具體(tǐ)錯誤信息,但(dàn)是知道大(dà)概原因。這些提示信息也将幫助我們的技術(shù)同事(shì)能夠迅速的定位問(wèn)題并處理(lǐ)問(wèn)題。上圖所示的正是遠(yuǎn)程服務器上PHP超大(dà)文件(jiàn)切片上傳失敗最常見(jiàn)的原因之一:文件(jiàn)切片上傳失敗、文件(jiàn)切片大(dà)小超過服務器的upload_max_filesize限制。
切片的大(dà)概思路(lù)是将一個比較大(dà)的文件(jiàn)分(fēn)切爲多個相(xiàng)對較小的文件(jiàn)來(lái)上傳,這樣可(kě)以有效降低文件(jiàn)上傳失敗的概率,所有切片文件(jiàn)上傳成功後,再在服務器上把所有切片文件(jiàn)組合還(hái)原成原來(lái)的這個大(dà)文件(jiàn)。這樣出了可(kě)以讓上傳更穩定之外,還(hái)可(kě)以突破一些系統對上傳的文件(jiàn)大(dà)小的限制。以阿裡(lǐ)雲爲例,其默認的upload_max_filesize是2MB,也就(jiù)是說(shuō),我們在網站(zhàn)中文件(jiàn)上傳大(dà)小最大(dà)就(jiù)是2MB,超過則無法上傳。同樣的道理(lǐ),當我們切片後的切片文件(jiàn)大(dà)小還(hái)是超過了服務器的upload_max_filesize的限制的話(huà),那麽就(jiù)會提示上圖所示的錯誤。因爲接口返回文件(jiàn)已經上傳,但(dàn)是服務器上的臨時文件(jiàn)夾卻沒有接收到這些文件(jiàn),導緻無法降臨時文件(jiàn)組合并移動到網站(zhàn)上傳目錄。
知道了問(wèn)題的原因,就(jiù)很好解決了,要麽修改服務器配置,要麽修改源碼中切片文件(jiàn)的大(dà)小,到此,問(wèn)題得(de)到有效解決。作(zuò)爲網站(zhàn)建設公司,創絡後期還(hái)将繼續分(fēn)享網站(zhàn)後台操作(zuò)使用經驗,以及一些常見(jiàn)的問(wèn)題的解決方案,希望可(kě)以幫到大(dà)家。