大師筆記之PHP上傳檔案代碼_PHP教程

來源:互聯網
上載者:User
PHP還是比較常用的,對於它的強大功能想必大家也都知道了,我們這裡就實現PHP上傳檔案程式碼分析。PHP之所以很難實現上傳進度條是因為在我們上傳檔案到伺服器的時候,要等到檔案全部送到伺服器之後,才執行相應的php檔案。在這之前,檔案資料儲存在一個臨時檔案裡面,而php無法獲得這個檔案的路徑及大小。

從Actionscript 2.0開始,Flash支援檔案上傳及下載了。雖然不能在服務端獲得檔案上傳進度,但我們可以在服務端獲得檔案的發送進度。根據這個原理,用Flash就能做出上傳進度條效果。我在網上看到過一些資料,但是感覺有缺陷。於是自己研究了一下,在前人的基礎上加強了程式的安全性和健壯性,並且增加了一些可自訂的參數。 目前我知道的方法有兩種,一種是使用PHP的創始人RasmusLerdorf寫的APC擴充模組來實現,另外一種方法是使用PECL擴充模組uploadprogress實現我這裡舉兩個分別實現的例子供參考,更靈活的應用根據自己需要來修改。

php上傳檔案判斷要存放的路徑是否存在 is_dir(),if檔案的類型是否達到要求 explode('.',name)array() in_array(),if檔案的大小是否達到要求 $_FILES[size]可以上傳了 move_uploaded_file($_FILES[]['tmp_name'],要存放的路徑和檔案名稱)原名存放直接拿$_FILES[]['name'] 還是重新命名:time()。

PHP上傳檔案代碼:

 
  1. function uploafile($path,$filesize=10241000,$type=1)
  2. {
  3. if(!empty($path) && !file_exists($path))
  4. {
  5. echo '上傳檔案的路徑不存在';exit;
  6. }
  7. //允許上傳的檔案類型
  8. $filetype = array
  9. (
  10. 1 => array('gif','png','jpg','jpeg','bmp'),
  11. 2 => array('swf','flv'),
  12. 3 => array('rm','rmvb','avi','wmv','mpg','asf','mp3','wma','wmv','mid'),
  13. 4 => array('txt','doc','xls','ppt','pdf','xml','rar','zip','gzip','cab','iso','sql'),
  14. 6 => array('exe','com','scr','bat')
  15. );
  16. //上傳檔案類型數組合并
  17. $filetype[5] = array_merge($filetype[2],$filetype[3]);
  18. //獲得$_FILES數組的所有key
  19. $arr_key = array_keys($_FILES);
  20. //判斷要上傳的檔案名稱
  21. $file = $_FILES[$arr_key[0]];
  22. $exten = check_file_type($file['name']);
  23. //判斷檔案上傳類型
  24. if($type!=7 && !in_array($exten,$filetype[$type]))
  25. {
  26. echo $file['name'].'的檔案類型不符合要求!';exit;
  27. }
  28. //判斷檔案大小
  29. if($file['size']>$filesize)
  30. {
  31. echo $file['size'].'的檔案大小不能超過'.$filesize.'位元組';exit;
  32. }
  33. //開始上傳
  34. //move_uploaded_file($file['tmp_name'],$path.$file['name']);
  35. //為了避免覆蓋,重命在旦夕名該檔案
  36. $newname = time().'.'.$exten;
  37. move_uploaded_file($file['tmp_name'],$path.$newname);
  38. return $newname;
  39. }
  40. echo uploafile('',$filesize=10241000,$type=3);
  41. ?>

以上就是詳細PHP上傳檔案代碼,很簡單吧。


http://www.bkjia.com/PHPjc/446545.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/446545.htmlTechArticlePHP還是比較常用的,對於它的強大功能想必大家也都知道了,我們這裡就實現PHP上傳檔案程式碼分析。PHP之所以很難實現上傳進度條是因為在...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.