背景
在網(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ā)送完。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26