1
2
3
4
5
6
7
8
9
10
11

$_FILE數組

發(fā)布時(shí)間:2017-07-20 08:02 &nb暗紙sp; 發(山化fā)布人:毛書朋   城雨 浏覽次數:6978


關聯課件: 6子項目六 - $_FILE數組樹關(點擊在線預覽)


6.3.3  $_FILE筆志數組

    &黃匠nbsp; 文件上傳的功能(néng)是經(jīng)常使用的,這(zhè)兵樹就(jiù)需要用到$_FIL費的E數組。有了文件上傳的功能(néng),不僅可以爲網站動态添加附件,以實現大的網頁的文字編輯的功能(néng),而且對國還(hái)可以實現網站中相關圖片、Flash動畫等的動态更新等。下路讀面(miàn)就(jiù)通過(guò)一個實例來了解$_FILE數組的使用窗有方法和文件上傳的基本原理。

1:  <!--文件6-鐘通3.php:文件上傳實例--&g會場t;

2:  <!--爲了能(n請街éng)正确運行,請在本文件的同目錄爸廠下新建一文件夾,名爲"upfile&q司制uot;,權限設置可寫-->對生;

3:  <?php

4:  &n笑綠bsp;    if ($西裡_POST[add]=="上傳"){

5:     &n聽自bsp;  &議小nbsp;   &nbs就家p; //根據現在的時(shí)間産生一個随機數

6:    &nbs在笑p;    &nbs能我p;    $rand1=rand 行地(0,9);

7:    民光   林相;   &n煙短bsp;   $rand2=rand (0,9媽你);

8:    &nbs能業p;     資店;    $rand3=rand (刀計0,9);

9:   校體;     &從裡nbsp;     $filenam分師e=date ("Ymdhms&qu鄉秒ot;).$rand1.$rand2.$r門到and3;

10:      吃書;     &nb車是sp; if(empty ($_FIL黃亮ES['file_name&水空#39;]['name'])){

11:     議你;      &n要裡bsp;//$_FILES['file_name'][為拿9;name']爲獲取客戶端機器文件的冷到原名稱

12:  &nbs影雪p;  &nb校科sp;     年城      echo林道"文件名不能(néng)爲空"讀資;

13:  &nb關我sp;   &n又著bsp;  &nbs喝紅p;  &nbs場北p;    e請老xit;

14:     &nbs子行p;  &n嗎票bsp;      &nb化店sp;}

15:   &nb算答sp;   $oldfilename=$_FILES[黑黑'file_name']['name'];見視

16:    &n樹亮bsp;  echo "<br>原文件銀刀名爲:".$oldfilename;

17:$filetype=substr($old站見filename,strrpos($oldfilename,&quo煙民t;."),strlen($o高暗ldfilename)-strrpos($oldf見筆ilename,".&話費quot;));

18:    動家;   echo "<br>原文多兒件的類型爲:".$filetype;

19:if(($filetype!=&#在就39;.doc')&am子區p;&($filetype!='笑著;.xls')&&a影紙mp;($filetype!='.DOC')&&a志員mp;($filetype!=&#電月39;.XLS')){

20:     &nbs水照p;    echo "<sc可近ript>alert('文件類型或地址錯誤')服遠;</script>";

21:    吧樂;    &nbs計拍p; echo "<script>loca妹錢tion.href='6-6.p生街hp';</script&科飛gt;";

22:    &nbs船那p;   &nbs光費p; exit;

23:     窗照;   要子;  }

24:   開我    e空行cho "<br>上傳文件的大小爲腦校(字節):".$_FILES['file森麗_name']['size'的好;];

25:    朋用     //$_FI吧多LES['file_name'化鄉;]['size']爲獲取客戶端機器文件的大訊低小,單位爲B

26:    &nb體綠sp;  if ($_FILES['愛場file_name']['size']&g日爸t;1000000) {

27:    &nbs熱信p;      大報echo "<scri身唱pt>alert('文件太大,不能(néng)上傳');家車</script>";

28:  是拍    &司慢nbsp; &nbs報作p; echo "<script>loc讀離ation.href='6-6.ph懂照p';</script>&qu窗做ot;;

29:  &nb頻能sp;   分雨    exit;

30:     作問   &n大兵bsp;  }

31:    &n民煙bsp; echo "<br>文件妹錢上傳服務器後(hòu)的臨時(shí)文件名爲:".$_FIL白鐘ES['file_name']['t國樹mp_
name'];

32:  &nb一唱sp;  兵對    //取得保存文件的臨時(shí)土理文件名(含路徑)

33:    &nbs水錯p;  $filename=$filename.$file愛很type;

34:     的但  echo "<br>新文件名書大爲:".$filename;

35:   &nbs理兵p;   $sa日短vedir="upfile/".$能城filename;

36:    &nb低她sp;  if(move_u城議ploaded_file($_FILES['file_name&算車#39;]['tmp_n大小ame'],$savedir)){

37:  &白討nbsp;     子農    $f但工ile_name=basename($s照科avedir);  //取得保存文件的電件文件名(不含路徑)

38:     樂行    音謝   echo 區來"<br>文件上傳成(chéng)功!保存爲:&好志quot;.$savedir;

39:   &nbs短報p;   著得    友做}else{

40:  計道      金我;     ech媽為o "<script 朋線language=javascript>&qu河費ot;;

41:     &nbs東低p;   線畫    e木什cho "alert('錯誤,雜熱無法將(jiāng)附件寫入服務器! 本次發(白木fā)布失敗!');";

42:     友煙     &n物視bsp;  echo "loca新子tion.href='6-6.ph南讀p?';";

43:  &nbs市我p;   &nbs匠爸p;   &n物購bsp;  echo "她能;</script>";

44:    為訊;   校通      e機腦xit;

45:    &n有訊bsp;    }&nbs上火p;   廠習  

46:    }

47:  ?>

48:  <h短子tml>

49:  <head>

50:  <meta 妹草http-equiv="Content-Language&qu懂物ot; content="zh-cn">

51:  <meta http-equiv="C現子ontent-Type" content="text長相/html; charset=gb2玩化312">

52:  <title>==文件上傳實例聽拿==</title>

53:  <style>

54:  body{font-size:10p亮算t};

55:  td{font短通-size:10pt};

56:  .style1 {col業民or: #FF0000}

57:  .style2 {

58:   &nb妹美sp; color: #000000;

59:     font-weight: 司姐bold;

60: }

61:  </style>道子;

62:  </head&g能制t;

63:  <body>

64:  <div&g媽通t;

65:  </div>

66:    <fo公醫rm  enctyp可白e="multipart/form-data"花林; action="6-6.php" method=&近有quot;post">農唱

67:    <謝高;!--此處一定要有enctype="multipart電線/form-data"//-->

68:   低亮 <table width="486&quo笑要t; height="103"睡好 border="1"行醫; cellpadding= 車喝"0" cells pa制些cing="0" bordercolor="#0就樹08080" id=&q離行uot;AutoNumber1" 冷習style="border-coll做好apse: collapse">

69:  &nb新有sp;  <tr bgcolor="#文票CCCCCC">

70:      林算<td height="學區30" colspan="2"><著女div>文件上傳實例&l見低t;/div> </td>

71:    </t刀冷r>

72:    <tr>

73:   &商門nbsp;  <td width="窗在;103" height="愛火;45"><場刀;div><span>南電*</span>文件上傳地址山熱:</div></td&g友船t;

74:   物音;   <td匠音 width="377" height="45&北習quot;><input type="自國file" name="file_name"&著聽gt;

75:    &nb務但sp; (大小〈2M 爲宜)</黑地td>

76:    </t工新r>

77:    <tr雪南>

78:      <t資也d height="33&跳男quot; colspan="2">

79:   &nbs校坐p;  <p><input type兒是="submit" value="上傳&qu你美ot; name="add">

80:      現個;  &nbsp相國;&nbsp;&nbsp;&事議;nbsp;<input type="re頻腦set" value=&你費quot;重置"name="B2"&術制gt; </td>

81:    </tr>

82:  </table>

83:  </form>

84:  </body>

85:  </html>

       值得注意的是“&畫雪lt;form enctype著還="multipart/form-data"算金;......>”是一個标簽,要離唱實現文件的上傳,必須將(jiāng)其指定爲multipart/信公form-data,否則服務器將(jiān紅高g)不知道(dào)如何執!

程序6-3.php的其運行效果如圖6-6所示。

6-6.1.jpg

(a)單擊“上傳”按鈕前

6-6.2.jpg

(b)單擊“上傳”按鈕後(hòu)

    &n媽大bsp;  需要說(sh坐都uō)明的是,“$_FILES['file_name花答9;]['name']”爲上傳文件的名字;“$_FILES[妹店'file_

name']['size']”老日爲上傳文件的大小,單位爲字節;“$_FILE生到S['file_name&#多窗39;]['tmp_name']”爲文件上傳到服務器上臨時店制(shí)文件的名字。

      年遠 通過(guò)上面(m兒關iàn)的例子,不難發(fā)現文件上傳的基本原理是:客戶機文的劇件→服務器臨時(shí)文件夾→服務器上傳文件夾。文件上傳過有不(guò)程中從客戶機到服務器的上傳過(guò)程中要通過(guò房裡)一系列的驗證,如文件的類型、大小等是否符合要求,從服務器臨時(shí)文件通看夾到服務器上傳文件夾的複制轉移過(guò)程中要給對答文件重新命名等。

       上面(m說拿iàn)測試了上傳一個文件的例子,要上傳多個文件應當如何處理呢?PH資一P 支持同時(shí)上傳多個文件厭街并將(jiāng)它們的信息自動著讀以數組的形式進(jìn)行組織。要完成(chéng)這(z土開hè)項功能(néng),需要在HTML表單中對(duì)文件上傳域使議國用與選框和複選框相同的數組式提交語法,可上弟以用下面(miàn)的方法來處理。

      &樹看nbsp; 提交的表單可以寫成(輛到chéng):

<form action="朋相;file-upload.php"白個; method="post" enctype=空制"multipart/form-data"&g們購t;

  Send these files:<br>

  <input答大 name="userfile討算[]" type="file&q那匠uot;><br>

  <input name="日畫userfile[]"訊行; type="file"><br>

  <input type="s線民ubmit" value="來動Send files">

</form>

       動校當以上表單被(bèi)提交後(hò子火u),數組$_FILES['userfile'森愛;]、$_FILES['user請化file']['name']和$_FILES[文了'userfile']購個['size']將(jiāng)被(bèi很裡)初始化。如果register_還拍globals的設置爲on,則和文件上傳相關的全局變量也將(jiāng)個吃被(bèi)初始化。所有這(zhè)些提交的信息都(dōu不冷)將(jiāng)被(bèi)儲存到以數字爲索引的數這司組中,用戶接收使用即可。



  • 王春雷 2018-01-07 17:07:15
    $_FILES數組内容如下: $_FILES[近船'myFile']['name'] 客戶端文件的原名稱。 $_FILE作畫S['myFile']['type'] 文件的 MIME 類型,需要黑農浏覽器提供該信息的支持,例如&quo睡劇t;image/gif"。 $_科飛FILES['myFile']['size店鐘'] 已上傳文件的大小,單位爲字節。 $_FI雨好LES['myFile']['tmp_n物還ame'] 文件被(bèi)上傳器去後(hòu)在服務端儲存的臨時(shí)文件名,一般是系統默認。可以生森在php.ini的upload_tmp_朋音dir 指定,但用 putenv() 函數設置是不起(qǐ)作用的。 生業$_FILES['myFile']['error'] 和該文件飛麗上傳相關的錯誤代碼。
  • 高成(chéng) 2018-01-08 16:51:45
    這(zhè)個如何判斷我提交的文件或者照片是不是正匠可确的格式呢?
  • 甄丹丹 2018-01-09 16:36:52
    有了文件上傳的功能(néng),不僅可以爲網站動态添加附件,以個女實現網頁的文字編輯的功能(néng),而且還(hái)可以實森市現網站中相關圖片、Flash動畫等的動态更新等
  • 潘龍飛 2018-01-09 18:18:31
    講得不錯,,,