• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        對文件上傳處理過程的進一步說明

        對文件上傳處理過程的進一步說明

        更新時間:2022-04-30 文章作者:未知 信息來源:網絡 閱讀次數:

        近來工作不是太忙,所以有空寫一點東西來共同學習、提高PHP的技術。

        向服務器上傳文件,是我們做項目時經常用的一種技術。做過ASP開發的知道,ASP對上傳文件很無耐,至少得需要借組其它手段,如自己寫VB代碼、利用免費上傳組件等,可謂痛苦之極。好在PHP發開發者為我們寫好上傳函數,使PHP可以輕而易舉的上傳文本文件、甚至二進制文件。所以在進行ASP開發的戰友們,快快轉行到我們的PHP開發吧,呵呵~~

        一、上傳單個文件

        您可以如下建立一個特殊的表單來支持文件上傳:

        文件上傳表單

        <form enctype="multipart/form-data" action="URL" method="post">
        <input type="hidden" name="MAX_FILE_SIZE" value="1000">
        <input name="myFile" type="file">
        <input type="submit" value="上傳文件">
        </form>

        這里的URL應該指向一個處理上傳文件的 PHP 文件。 MAX_FILE_SIZE隱藏字段必須在文件輸入字段之前,且其值為接受文件的最大尺寸,單位是字節。 注意,該值實際上并不能真正地在客戶端控制上傳文件的大小。

        上傳動作產生的文件信息存放于特定的數組中,數組的名字會根據PHP的版本和配置文件的設置不同而不同。全局變量 _FILES 數組從PHP4.1.0版本就已經開始支持了。而 $HTTP_POST_FILES 數組是從PHP4.0.0開始支持的。 不過這里推薦您使用 _FILES 數組,因為php.ini里的 register_globals 設置為 off 時,相關的變量名還可以使用,而且從PHP4.2.0版本開始,它已經設置為 off 。這里也不主張您改為 ON。

        在剛才的表單后面加上phpinfo();函數,提交一下表單,就會看到 _FILES 數組的內容:

        $_FILES['myFile']['name']客戶端文件的原名稱,同ON時的 $myFile_name,下同。

        $_FILES['myFile']['type']文件的 MIME類型,需要瀏覽器提供該信息的支持,例如“image/gif”。

        $_FILES['myFile']['size']已上傳文件的大小,單位為字節。

        $_FILES['myFile']['tmp_name']文件被上傳后在服務端儲存的臨時文件名,一般是系統默認。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函數設置是不起作用的。

        $_FILES['myFile']['error']和該文件上傳相關的錯誤代碼。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的說明:(它們在PHP3.0以后成了常量)

        UPLOAD_ERR_OK
        值:0; 沒有錯誤發生,文件上傳成功。

        UPLOAD_ERR_INI_SIZE
        值:1; 上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值。

        UPLOAD_ERR_FORM_SIZE
        值:2; 上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。

        UPLOAD_ERR_PARTIAL
        值:3; 文件只有部分被上傳。

        UPLOAD_ERR_NO_FILE
        值:4; 沒有文件被上傳。
        值:5; 上傳文件大小為0.

        文件被上傳結束后,默認地被存儲在了臨時目錄中,這時您必須將它從臨時目錄中刪除或移動到其它地方,如果沒有,則會被刪除。也就是不管是否上傳成功,腳本執行完后臨時目錄里的文件肯定會被刪除。所以在刪除之前要用PHP的 copy() 函數將它復制到其它位置,此時,才算完成了我們的上傳文件過程。

        二、上傳多個文件

        有了上面的認識,同時上傳多個文件也就不難做了。上傳多個文件是從PHP3.0.10版本開始被支持。要完成它,只需文件名以數組形式表示即可:
        <form action="file-upload.php" method="post" enctype="multipart/form-data">
        <input name="myFile[]" type="file"><br>
        <input name="myFile[]" type="file"><br>
        <input type="submit" value="上傳多個文件">
        </form>

        假如我們上傳了兩個文件:first.txt 和 second.gif。表單被提交后,
        $_FILES["myFile"]["name"][0]、$_FILES["myFile"]["size"][0]分別指first.txt文件的名字和大小,
        $_FILES["myFile"]["name"][1]、$_FILES["myFile"]["size"][1]分別指 second.gif 的文件名字和大小。當然,$_FILES["myFile"]["tmp_name"]、$_FILES["myFile"]["type"]也同樣會產生。

        三、注意事項

        1.對 MAX_FILE_SIZE 設置的值,不能大于 ini 設置中 upload_max_filesize 選項設置的值。其默認值為 2M 字節。

        2.如果 max_execution_time 設置的值太小,腳本運行的時間可能會超過該設置。也就是文件還未上傳成功已經到了結束時間。因此,請保證 max_execution_time 足夠的大。

        3.如果內存限制設置被激活,您可能需要將 memory_limit 設置的更大些,所以也請確認 memory_limit 的設置足夠的大。

        4.如果 post_max_size 設置的值太小,則較大的文件會無法被上傳。因此,請保證 post_max_size 的值足夠的大。

        5.不能保證文件名有空格的文件被正確上傳。

        四、PUT方式上傳
         上面的上傳單個、多個文件,均是在<form>表單里以POST方式上傳到服務器里的。不過據說PHP 提供了對 Netscape Composer 和 W3C Amaya 等客戶端以 HTTP PUT 方法上傳文件的支持。這樣的安全性怎么樣我不清楚,手頭也沒有類似資料,希望了解此方式的網友們提供一些資料和討論,這里先謝過了^_^。


        五、一些說明

         1.要想上傳文件,得保證服務器沒有關閉臨時文件和有對文件夾的寫權限

         2.這里只是簡單的說明上傳參數,具體的步驟和需要可以參看精華區的貼子,如控制文件類型等。

         3.由于是在匆忙中完全,肯定會有所漏洞和遺漏,歡迎跟貼補充、討論。

         4.參考:php.net在線幫助
         erquan
        2002/2/27 上午于鄭州

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 亚洲人AV在线无码影院观看| 性盈盈影院免费视频观看在线一区| 亚洲人成影院在线无码观看| 亚洲精品自偷自拍无码| 狠狠久久永久免费观看| 亚洲精品无码人妻无码| 国产成人免费a在线视频app| 亚洲成a人片在线观看天堂无码 | 四虎永久成人免费| 亚洲av综合日韩| 亚洲AⅤ视频一区二区三区| 无码免费又爽又高潮喷水的视频 | 全免费a级毛片免费看| 香蕉视频在线观看亚洲| 18禁美女黄网站色大片免费观看| 老色鬼久久亚洲AV综合| a毛片基地免费全部视频| 亚洲成在人线在线播放无码| 亚洲国产一区二区视频网站| 日韩av无码免费播放| 亚洲精品成人网站在线播放 | 有色视频在线观看免费高清在线直播| 亚洲人成影院在线观看| 无码人妻一区二区三区免费看| 亚洲精品美女视频| 黄网址在线永久免费观看 | 亚洲三级视频在线| 成人免费视频国产| 成在人线av无码免费高潮水| 亚洲色图在线播放| 日产乱码一卡二卡三免费| 韩国免费a级作爱片无码| 亚洲视频一区二区三区四区| 亚洲A∨精品一区二区三区| 99久久免费精品高清特色大片| 亚洲日韩看片无码电影| 亚洲人成色77777| 最新中文字幕免费视频| 好男人资源在线WWW免费 | 亚洲色大成WWW亚洲女子| 亚洲日本一区二区三区在线不卡|