背景

在網(wǎng)站開發(fā)中,文件上傳是很常見的一個功能。相信很多人都會遇到這種情況,想傳一個文件上去,然后網(wǎng)頁提示“該文件過大”。因?yàn)橐话闱闆r下,我們都需要對上傳的文件大小做限制,防止出現(xiàn)意外的情況。
但是在有些業(yè)務(wù)場景中,大文件上傳又是必須的,比如郵箱附件,或者內(nèi)部OA等等。

問題

服務(wù)端為什么不能直接傳大文件?跟php.ini里面的幾個配置有關(guān)

upload_max_filesize = 2M //PHP最大能接受的文件大小post_max_size = 8M //PHP能收到的最大POST值'memory_limit = 128M //內(nèi)存上限max_execution_time = 30 //最大執(zhí)行時間

當(dāng)然不能簡單粗暴的把上面幾個值調(diào)大,否則服務(wù)器內(nèi)存資源吃光是遲早的問題。

解決思路

好在HTML5開放了新的FILE API,也可以直接操作二進(jìn)制對象,我們可以直接在瀏覽器端實(shí)現(xiàn)文件切割,按照以前的做法就得用Flash的方案,實(shí)現(xiàn)起來會麻煩很多。

JS思路
1.監(jiān)聽上傳按鈕的onchange事件
2.獲取文件的FILE對象
3.把文件的FILE對象進(jìn)行切割,并且附加到FORMDATA對象中
4.把FORMDATA對象通過AJAX發(fā)送到服務(wù)器
5.重復(fù)3、4步驟,直到文件發(fā)送完。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式