php單文件上傳和多文件上傳

php文件上傳-配置php.ini文件以及預約義變量$_FILES

一:配置 php.ini 文件php

想要順利的實現上傳功能,首要作的就是在 php.ini 中開啓文件上傳,並對其中的一些參數做出合理的設置。找到 File Upioads 項,能夠看到下面有 3 屬性,表示含義以下:html

  • file_uploads:若是值爲 on,說明服務器支持上傳文件;若是爲 off,則表示不支持。數組

  • upload_tem_dir:上傳文件臨時目錄。在文件被成功上傳以前,文件首先存放到服務器端的臨時目錄,若是想要指定位置,可在這裏設置,不然使用系統默認目錄就能夠了。服務器

  • upload_max_filesize: 服務器容許上傳的文件的最大值,以MB爲單位。系統默認是 2MB,用戶能夠自行設置。函數

除了File Upolads項,還有幾個屬性也會影響到上傳文件的功能。post

  • max_execution_time:PHP 中一個指令所能執行的最長時間,單位是秒;spa

  • memory_limit : PHP 中一個指令所分配的沒存空間,單位是MB;code

說明:orm

1.若是使用集成的安裝包來配置PHP 的開發環境,上述介紹的這些配置信息按默認已經配置好了!htm

2.若是要上傳超大的文件,須要對 php.ini 的一些參數進行修改,其中包括 upload_max_filesize服務器容許上傳的文件的最大值,max_execution_time 一個指令所能執行的最長時間和memory_limit一個指令所分配的內存空間!

 

二:預約義變量$_FLIES

$_FLIES 變量儲存的事是上傳文件的相關信息,這些信息對於上傳功能有很大的做用。該變量是一個二維數組。預約義變量$_FILES 元素說明以下表:

 

 

下面實例建立一個上傳文件域,經過$_FILES變量輸出上傳的文件資料。具體示例代碼以下

<html>

<body>

<table width="500" border="1" cellpadding="0" cellspacing="0">

    <!--上傳文件的 form表單,必須有 enctype 屬性-->

    <form method="post" about="" enctype="multipart/form-data">

    <tr>

        <td width="150" height="30" align="right" valign="middle">請選擇上傳文件:</td>

        <!--上傳文件域,type類型爲file-->

        <td width="250"><input type="file" name="upfile"></td>

        <!-- 提交按鈕-->

        <td width="100"><input type="submit" name="submit" value="上傳"></td>

</tr>

</form>

</table>

</body>

</html>

<?php

header("Content-Type:text/html; charset=utf-8");

if(!empty($_FILES)){                                //判斷變量$_FILES是否爲空

    foreach ($_FILES['upfile'] as $name => $value){ //使用 foreach 循環輸出上傳文件信息的名稱和值

        echo $name,"=".$value."<br>";

    }

}

?>

輸出結果爲:

 

 

PHP文件上傳-move_uploaded_file()函數的使用詳解

下面的實例建立一個上傳表單,容許上傳文件大小爲 1MB 一下的文件,具體的示例代碼以下:

<html>

<body>

<table width="500" border="1" cellpadding="0" cellspacing="0">

    <!--上傳文件的 form表單,必須有 enctype 屬性-->

    <form method="post" about="" enctype="multipart/form-data">

    <tr>

        <td width="150" height="30" align="right" valign="middle">請選擇上傳文件:</td>

        <!--上傳文件域,type類型爲file-->

        <td width="250"><input type="file" name="upfile"></td>

        <!-- 提交按鈕-->

        <td width="100"><input type="submit" name="submit" value="上傳"></td>

</tr>

</form>

</table>

</body>

</html>

<?php

header("Content-Type:text/html; charset=utf-8");

if(!empty($_FILES)){                                //判斷變量$_FILES是否爲空

    $fileinfo = $_FILES['upfile'];
    if($fileinfo['size']>0 && $fileinfo['size']<1000000){
        move_uploaded_file($fileinfo['tmp_name'], $fileinfo['name']);
        echo '上傳成功';
    }else{
        echo '文件太大或未知';
    }

}

?>

說明:

使用 move_uploaded_file()函數上傳文件,在建立 form表單時,必須設置 form 表單的 enctype="multipart/form-data「。

 

PHP文件上傳-多文件上傳的示例代碼詳解

下面的實例有 2個文件上傳域,文件域的名字爲 u_file[],提交後上傳的文件信息都會被保存到$_FILES['u_file']中,生成多爲數組,讀取數組信息,而且上傳文件,具體實例代碼以下:

<html>

<body>

<table border="1" cellpadding="0" cellspacing="0">

    <!--上傳文件的 form表單,必須有 enctype 屬性-->

    <form method="post" about="" enctype="multipart/form-data">

    <tr>

        <td>請選擇上傳文件:</td>

        <!--上傳文件域,type類型爲file-->

        <td><input type="file" name="u_file[]"></td>
        <td><input type="file" name="u_file[]"></td>

        <!-- 提交按鈕-->

        <td><input type="submit" name="submit" value="上傳"></td>

</tr>

</form>

</table>

</body>

</html>

<?php

header("Content-Type:text/html; charset=utf-8");

if(!empty($_FILES['u_file']['name'])){  
    $file_name = $_FILES['u_file']['name'];
    $file_tmp_name = $_FILES['u_file']['tmp_name'];
    for($i=0;$i<count($file_name);$i++){
        if($file_name[$i] != ''){
            move_uploaded_file($file_tmp_name[$i], $i.$file_name[$i]);
            echo '文件'.$file_name[$i].'上傳成功<br>';
        }
    }

}

?>

輸出結果以下:

 

 歡迎QQ交流討論:965794175

相關文章
相關標籤/搜索