大師筆記之PHP上傳文件代碼
PHP還是比較常用的,對于它的強(qiáng)大功能想必大家也都知道了,我們這里就實(shí)現(xiàn)PHP上傳文件代碼分析。PHP之所以很難實(shí)現(xiàn)上傳進(jìn)度條是因?yàn)樵谖覀兩蟼魑募椒?wù)器的時(shí)候,要等到文件全部送到服務(wù)器之后,才執(zhí)行相應(yīng)的php文件。在這之前,文件數(shù)據(jù)保存在一個(gè)臨時(shí)文件里面,而php無法獲得這個(gè)文件的路徑及大小。
#T#從Actionscript 2.0開始,F(xiàn)lash支持文件上傳及下載了。雖然不能在服務(wù)端獲得文件上傳進(jìn)度,但我們可以在服務(wù)端獲得文件的發(fā)送進(jìn)度。根據(jù)這個(gè)原理,用Flash就能做出上傳進(jìn)度條效果。我在網(wǎng)上看到過一些資料,但是感覺有缺陷。于是自己研究了一下,在前人的基礎(chǔ)上加強(qiáng)了程序的安全性和健壯性,并且增加了一些可自定義的參數(shù)。 目前我知道的方法有兩種,一種是使用PHP的創(chuàng)始人RasmusLerdorf寫的APC擴(kuò)展模塊來實(shí)現(xiàn),另外一種方法是使用PECL擴(kuò)展模塊uploadprogress實(shí)現(xiàn)我這里舉兩個(gè)分別實(shí)現(xiàn)的例子供參考,更靈活的應(yīng)用根據(jù)自己需要來修改。
php上傳文件判斷要存放的路徑是否存在 is_dir(),if文件的類型是否達(dá)到要求 explode('.',name)array() in_array(),if文件的大小是否達(dá)到要求 $_FILES[size]可以上傳了 move_uploaded_file($_FILES[]['tmp_name'],要存放的路徑和文件名稱)原名存放直接拿$_FILES[]['name'] 還是重命名:time()。
PHP上傳文件代碼:
- function uploafile($path,$filesize=10241000,$type=1)
- {
- if(!empty($path) && !file_exists($path))
- {
- echo '上傳文件的路徑不存在';exit;
- }
- //允許上傳的文件類型
- $filetype = array
- (
- 1 => array('gif','png','jpg','jpeg','bmp'),
- 2 => array('swf','flv'),
- 3 => array('rm','rmvb','avi','wmv','mpg','asf','mp3','wma','wmv','mid'),
- 4 => array('txt','doc','xls','ppt','pdf','xml','rar','zip','gzip','cab','iso','sql'),
- 6 => array('exe','com','scr','bat')
- );
- //上傳文件類型數(shù)組合并
- $filetype[5] = array_merge($filetype[2],$filetype[3]);
- //獲得$_FILES數(shù)組的所有key
- $arr_key = array_keys($_FILES);
- //判斷要上傳的文件名稱
- $file = $_FILES[$arr_key[0]];
- $exten = check_file_type($file['name']);
- //判斷文件上傳類型
- if($type!=7 && !in_array($exten,$filetype[$type]))
- {
- echo $file['name'].'的文件類型不符合要求!';exit;
- }
- //判斷文件大小
- if($file['size']>$filesize)
- {
- echo $file['size'].'的文件大小不能超過'.$filesize.'字節(jié)';exit;
- }
- //開始上傳
- //move_uploaded_file($file['tmp_name'],$path.$file['name']);
- //為了避免覆蓋,重命在旦夕名該文件
- $newname = time().'.'.$exten;
- move_uploaded_file($file['tmp_name'],$path.$newname);
- return $newname;
- }
- echo uploafile('',$filesize=10241000,$type=3);
- ?>
以上就是詳細(xì)PHP上傳文件代碼,很簡單吧。