1 upload |
$_FILES 超全局數組,包含了有關上傳文件的全部信息!
並且,這個數組中只包含文件相關信息,其餘數據依然在$_POST裏面。
$_FILES 是一個二維數組,每上傳一個文件,都是數組的一個子數組。每一個子數組包含信息以下:
'name' => string 'ch05-數據庫對象.ppt' (上傳文件名)
'type' => string 'application/vnd.ms-powerpoint' (上傳文件所屬的MIME類型)
'tmp_name' => string 'E:\Tools\wamp64\tmp\phpDEC9.tmp' (文件上傳後,在服務器存儲的緩存文件地址)
'error' => int 0 (出現的錯誤信息,0表示沒有錯誤)
'size' => int 836096 (上傳文件的大小)
error常見的值:
0 沒有任何錯誤
1 超過服務器限制大小。 php.ini文件的upload_max_filesize;
2 超過客戶端限制大小。 表單中的隱藏域name="MAX_FILE_SIZE"限制的大小
3 文件只被上傳了一部分、
4 沒有上傳文件php
var_dump($_FILES); foreach ($_FILES as $key => $value) { //取到文件名,並用.分隔爲數組 $nameArr = explode(".", $_FILES[$key]["name"]); //從上述數組中,取到最後一個,就是上傳文件的後綴名 $houzhiming = $nameArr[count($nameArr)-1]; //使用當前時間+隨機數的方式,隨機生成一個文件名 $filename = date("YmdHis").rand(100,999).".".$houzhiming; // 判斷myFile裏面的臨時文件,是否是上傳過來的。 if(is_uploaded_file($_FILES[$key]["tmp_name"])){ // 將臨時文件,移動到服務器www根目錄下的upload文件夾中。 // 若是成功返回true,不然返回false $isOk = move_uploaded_file($_FILES[$key]["tmp_name"],$_SERVER['DOCUMENT_ROOT']."/upload/".$filename); if(!$isOk){ echo("文件【{$_FILES[$key]["name"]}】上傳失敗,沒法移動到指定目錄下!!"); continue; } }else{ echo("文件【{$_FILES[$key]["name"]}】上傳的文件不是合法上傳的!"); continue; } echo "文件【{$_FILES[$key]["name"]}】上傳成功!!!<br>"; }
2 download |
這段代碼雖然本身寫不簡單可是咱們能夠用現成的,因此也就是多複雜了數據庫
//文件下載練習 $filename="./upload/aa.png"; $basename=pathinfo($filename); header("Content-Type: image/png"); //指定下載文件類型的 header("Content-Disposition:attachment;filename=".$basename["basename"]);//指定下載文件的描述信息 header("Content-Length:".filesize($filename)); //指定文件大小的 readfile($filename);//將內容輸出,以便下載。