利用文件函數(shù)實(shí)現(xiàn)PHP文件上傳案例分析
如果你是一個(gè)電腦愛好者,不知道PHP的話你就太落伍了,如果想知道PHP的相關(guān)知識,我們就一起來看看PHP文件上傳的實(shí)現(xiàn)吧。這段代碼分為兩個(gè)文件,一個(gè)為upload.html,一個(gè)是upload.php。
- <form enctype="multipart/form-data" action="upload.php" method="post">
- <input type="hidden" name="max_file_size" value="100000">
- <input name="userfile" type="file">
- <input type="submit" value="上傳文件">
- </form>
#T#其中,請注意<form enctype="multipart/form-data"......>這是一個(gè)標(biāo)簽,我們要實(shí)現(xiàn)文件的上傳,必須指定為multipart/form-data,否則服務(wù)器將不知道要干什么。值得注意的是文件upload.html中表單選項(xiàng) MAX_FILE_SIZE 的隱藏值域,通過設(shè)置其Value(值)可以限制上載文件的大小。MAX_FILE_SIZE 的值只是對瀏覽器的一個(gè)建議,實(shí)際上它可以被簡單的繞過。因此不要把對瀏覽器的限制寄希望于該值。實(shí)際上,PHP 設(shè)置中的PHP文件上傳***值,是不會失效的。但是***還是在表單中加上 MAX_FILE_SIZE,因?yàn)樗梢员苊庥脩粼诨〞r(shí)間等待上傳大文件之后才發(fā)現(xiàn)該文件太大了的麻煩。
- upload.php
- $f=&$HTTP_POST_FILES['Myfile'];
- $dest_dir='uploads';//設(shè)定上傳目錄
- $dest=$dest_dir.'/'.date("ymd")."_".$f['name'];//設(shè)置文件名為日期加上文件名避免重復(fù)
- $r=move_uploaded_file($f['tmp_name'],$dest);
- chmod($dest, 0755);//設(shè)定上傳的文件的屬性
或者
- <?copy($_FILES[MyFile][tmp_name],$_FILES[MyFile][name]);?>
以上范例中 $_FILES 數(shù)組的內(nèi)容如下所示。我們假設(shè)文件上傳字段的名稱為 userfile(名稱可隨意命名)
- $_FILES['userfile']['name']//客戶端機(jī)器文件的原名稱。
- $_FILES['userfile']['type'] //文件的 MIME 類型,需要瀏覽器提供該信息的支持,例如“image/gif”。
- $_FILES['userfile']['size']// 已上傳文件的大小,單位為字節(jié)。
- $_FILES['userfile']['tmp_name'] //文件被上傳后在服務(wù)端儲存的臨時(shí)文件名。
- $_FILES['userfile']['error'] //和該文件上傳相關(guān)的錯(cuò)誤代碼
PHP文件上傳值分析:
◆值:0; 沒有錯(cuò)誤發(fā)生,文件上傳成功。
◆值:1; 上傳的文件超過了 php.ini 中 upload_max_filesize 選項(xiàng)限制的值。
◆值:2; 上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項(xiàng)指定的值。
◆值:3; 文件只有部分被上傳。
◆值:4; 沒有文件被上傳。