程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 完整代碼演示PHP上傳多個文件

完整代碼演示PHP上傳多個文件

編輯:關於PHP編程

前幾天看了一本關於PHP的書,讓我感觸很深,我先介紹一下PHP的發展史,然後在教大家一個PHP上傳多個文件的一個小技巧。讓我們先來簡單的介紹一下PHP吧!PHP 最初是1994年Rasmus Lerdorf創建的,剛剛開始只是一個簡單的用Perl語言編寫的程序,用來統計他自己網站的訪問者。後來又用C語言重新編寫,包括可以訪問數據庫。

以後越來越多的網站使用了PHP,並且強烈要求增加一些特性,比如循環語句和數組變量等等,在新的成員加入開發行列之後,在1995年 中,PHP2.0發布了。第二版定名為PHP/FI(Form Interpreter)。PHP/FI加入了對mSQL的支持,從此建立了PHP在動態網頁開發上的地位。到了1996年底,有15000個網站使用 PHP/FI;時間到了1997年中,使用PHP/FI的網站數字超過五萬個。而在1997年中,開始了第三版的開發計劃,開發小組加入了 Zeev Suraski 及 Andi Gutmans,而第三版就定名為PHP3。2000年,PHP4.0又問世了,其中增加了許多新的特性。以下給大家介紹一個PHP上傳多個文件的方法。

PHP上傳多個文件代碼實現:

  1. <?php 
  2. require_once("include/upload.class.php");  
  3. if($_POST["button"])  
  4. {  
  5. //print_r($_FILES);  
  6. //多個上傳  
  7. //$upload=newTTRUpload($_FILES,"ANY");//同下  
  8.  
  9. $upload=newTTRUpload(array($_FILES["file1"],$_FILES["file2"],$_FILES["file3"],$_FILES["file4"]),"ANY");  
  10.  
  11. //單個上傳  
  12. //$upload=newTTRUpload($_FILES["file1"]);  
  13. $upload->upload();  
  14. echo$upload->getUploadFileName();  
  15. }  
  16. ?> 
  17. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  18. <htmlxmlnshtmlxmlns="http://www.w3.org/1999/xhtml"> 
  19. <head> 
  20. <metahttp-equivmetahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> 
  21. <title>UntitledDocument</title> 
  22. </head> 
  23.  
  24. <body> 
  25. <formactionformaction=""method="post"enctype="multipart/form-data"name="form1"id="form1"> 
  26. <inputtypeinputtype="file"name="file1"id="file1"/> 
  27. <br/> 
  28. <inputtypeinputtype="file"name="file2"id="file2"/> 
  29. <br/> 
  30. <inputtypeinputtype="file"name="file3"id="file3"/> 
  31. <br/> 
  32. <inputtypeinputtype="file"name="file4"id="file4"/> 
  33. <br/> 
  34. <inputtypeinputtype="submit"name="button"id="button"value="Submit"/> 
  35. </form> 
  36. </body> 
  37. </html> 
  38.  
  39. <?php 
  40. classTTRUploadextendsError  
  41. {  
  42. constfilesize=81200000;  
  43. private$uploadpath="uploadfile/";  
  44. private$savepath=null;  
  45. private$uploadfilename=null;//單個文件為文件名,批量文件為xxxx|xxxx格式,請注意  
  46. private$ext=array("jpg","gif","png");  
  47. private$error=null;  
  48. private$file=null;  
  49. private$uploadtype=null;  
  50. private$filename=null;  
  51.  
  52. //構造函數,$type:ONE單個上傳ANY批量上傳;  
  53. publicfunction__construct($file,$type="ONE")  
  54. {  
  55. if($type!="ONE"&&$type!="ANY")  
  56. {  
  57. echo"<scriptlanguagescriptlanguage='javascript'>alert('初始化請選擇ONE或者ANY')</script>";  
  58. exit;  
  59. }  
  60. $this->uploadtype=$type;  
  61. $this->file=$file;  
  62. }  
  63.  
  64. privatefunctioncreateFileName()  
  65. {  
  66. return$this->filename="TTR_".time().$this->getRandomN(4);  
  67. }  
  68.  
  69. privatefunctiongetUploadPath()  
  70. {  
  71. if(substr($this->uploadpath,-1,1)!="/")  
  72. {  
  73. $this->savepath=$this->uploadpath."/".date("Ym");  
  74. }else{  
  75. $this->savepath=$this->uploadpath.date("Ym");  
  76. }  
  77. $this->savepath=$this->getFolder($this->savepath);  
  78. returntrue;  
  79. }  
  80.  
  81. privatefunctiongetFileExt($tempfilename)  
  82. {  
  83. returnend(explode(".",$tempfilename));  
  84. }  
  85.  
  86. privatefunctiongetExt()  
  87. {  
  88. if(in_array(strtolower($this->getFileExt($tempfilename)),$this->ext))  
  89. {  
  90. returntrue;  
  91. }else{  
  92. returnfalse;  
  93. }  
  94. }  
  95.  
  96. privatefunctiongetFolder($folder)  
  97. {  
  98. if(!is_dir($folder))  
  99. {  
  100. mkdir($folder);  
  101. }  
  102. return$folder."/";  
  103. }  
  104.  
  105.  
  106. publicfunctionupload()  
  107. {  
  108. if($this->uploadtype=="ONE")  
  109. {  
  110.  
  111.  
  112. if($this->getExt($this->file["type"]))  
  113. {  
  114.  
  115. parent::errorExt();  
  116.  
  117. }elseif($this->file["size"]>self::filesize){  
  118.  
  119. parent::errorFileSize();  
  120.  
  121. }elseif(!$this->getUploadPath()){  
  122.  
  123. parent::errorUploadPath();  
  124.  
  125. }else{  
  126. $filenametemp=$this->createFileName();  
  127. $filename=$this->savepath.$filenametemp.".".$this->getFileExt($this->file["name"]);  
  128. if(move_uploaded_file($this->file["tmp_name"],$filename))  
  129. {  
  130. $this->uploadfilename=$filenametemp;  
  131. parent::okMoved();  
  132.  
  133.  
  134. }else{  
  135. parent::errorMoveUpload();  
  136. }  
  137. }  
  138. }elseif($this->uploadtype=="ANY"){  
  139.  
  140. for($i=0;$i<count($this->file);$i++)  
  141. {  
  142.  
  143. if($this->getExt($this->file[$i]["type"]))  
  144. {  
  145. parent::errorExt();  
  146.  
  147. }elseif($this->file[$i]["size"]>self::filesize){  
  148.  
  149. parent::errorFileSize();  
  150.  
  151. }elseif(!$this->getUploadPath()){  
  152.  
  153. parent::errorUploadPath();  
  154.  
  155. }else{  
  156. $filenametemp=$this->createFileName();  
  157. $filename=$this->savepath.$filenametemp.".".$this->getFileExt($this->file[$i]["name"]);  
  158. if(move_uploaded_file($this->file[$i]["tmp_name"],$filename))  
  159. {  
  160. $str.=$filenametemp."|";  
  161.  
  162. }else{  
  163. parent::errorMoveUpload();  
  164. }  
  165.  
  166. }  
  167.  
  168. }  
  169. $this->uploadfilename=substr($str,0,strlen($str)-1);  
  170. parent::okMoved();  
  171. }  
  172. }  
  173.  
  174. publicfunctiongetUploadFileName()  
  175. {  
  176. return$this->uploadfilename;  
  177. }  
  178.  
  179. publicfunctionsetUploadPath($path)  
  180. {  
  181. $this->uploadpath=$path;  
  182. }  
  183.  
  184.  
  185. privatefunctiongetRandomN($n)  
  186. {  
  187. if($n<1||$n>10)return"";  
  188.  
  189. $ary_num=array(0,1,2,3,4,5,6,7,8,9);  
  190. $return="";  
  191. for($i=0;$i<$n;$i++)  
  192. {  
  193. $randrandn=rand(0,9-$i);  
  194. $return.=$ary_num[$randn];  
  195. $ary_num[$randn]=$ary_num[9-$i];  
  196. }  
  197. return$return;  
  198. }  
  199.  
  200.  
  201.  
  202. publicfunction__destruct()  
  203. {  
  204. $this->uploadfilename=null;  
  205. $this->uploadtype=null;  
  206. $this->file=null;  
  207. $this->savepath=null;  
  208. }  
  209.  
  210. }  
  211.  
  212. classError  
  213. {  
  214. publicstaticfunctionerrorFileSize()  
  215. {  
  216. echo"超出最大上傳限制";  
  217. }  
  218.  
  219. publicstaticfunctionerrorExt()  
  220. {  
  221. echo"此類文件不允許上傳";  
  222. }  
  223.  
  224. publicstaticfunctionerrorUploadPath()  
  225. {  
  226. echo"上傳路徑不正確";  
  227. }  
  228.  
  229. publicstaticfunctionerrorMoveUpload()  
  230. {  
  231. echo"上傳失敗";  
  232. }  
  233.  
  234. publicstaticfunctionokMoved()  
  235. {  
  236. echo"上傳成功!";  
  237. }  
  238.  
  239. publicstaticfunctionokArrayMoved()  
  240. {  
  241. echo"上傳成功!";  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved