PHP之所以很難實現上傳進度條是因為在我們上傳文件到服務器的時候,要等到文件全部送到服務器之後,才執行相應的php文件。在這之前,文件數據保存在一個臨時文件裡面,而php無法獲得這個文件的路徑及大小。
從Actionscript 2.0開始,Flash支持文件上傳及下載了。雖然不能在服務端獲得文件上傳進度,但我們可以在服務端獲得文件的發送進度。根據這個原理,用Flash就能做出上傳進度條效果。
我在網上看到過一些資料,但是感覺有缺陷。於是自己研究了一下,在前人的基礎上加強了程序的安全性和健壯性,並且增加了一些可自定義的參數。
說明:如果你的電腦安裝了防火牆軟件,那麼可能會看到進度條一下就100%的情況。這是因為進度條顯示的是flash把文件傳給防火牆軟件的速度!防火牆還要再將數據傳到服務器。
演示請點擊這裡
本程序是Longbill 根據網上相關資料改進而成的
http://www.longbill.cn
Email: [email protected]
調用參數說明(假設本flash名字為 upload.swf):
將flash文件的調用地址寫成:
upload.swf?maxsize=[單個文件最大體積]&bgcolor=[進度條顏色]
&limit=[限制上傳文件類型]&savefile=[上傳對象文件]
[單個文件最大體積]:【可選】【數字】(單位為 KB)
[進度條顏色]: 【可選】【六位十六進制數字】【默認為隨機顏色】(沒有#的16位顏色值)
[限制上傳文件類型]: 【可選】格式如: limit=zip|rar|doc
[上傳對象文件]: 【默認為save.php】【字符串】
例如:
upload.swf?maxsize=2048&bgcolor=FF00FF&limit=jpg|gif|png&savefile=upsave.php
打包文件下載