檔案資訊相關API
$filename="./1-file.php"; //filetype($filename):獲取檔案的型別,回傳的是檔案的型別 echo '檔案型別為:',filetype($filename),"\n";//file //filesize($filename):獲得檔案的大小,回傳位元組 echo '檔案大小為:',filesize($filename),"\n";//1214 //filectime($filename):獲取檔案的創建時間 echo '檔案創建時間為:',filectime($filename),"\n";//1578719729 echo '檔案創建時間為:',date('Y年m月d日 H:i:s',filectime($filename)),"\n";//2020年01月11日 13:15:29 //filemtime($filename):檔案的修改時間 echo '檔案的修改時間為:',date("Y/m/d H:i:s",filemtime($filename)),"\n";//2020/01/11 14:28:20 //fileatime($filename):檔案的最后訪問時間 echo '檔案的最后訪問時間為:',date("Y/m/d H:i:s",fileatime($filename)),"\n";//2020/01/11 14:28:20
檢測檔案是否可讀、可寫、可執行is_readable()、is_writeable()、is_executable();
$filename="./1-file.php"; var_dump( is_readable($filename),//bool(true) is_writable($filename),//bool(true) is_writeable($filename),//bool(true) is_executable($filename)//bool(false) );
is_file($filename):檢測是否為檔案,并且檔案存在
var_dump(is_file($filename));//bool(true)
pathinfo():檔案路徑相關資訊
$filename="./test1.txt"; $pathinfo=pathinfo($filename); print_r($pathinfo); /* Array ( [dirname] => . [basename] => test1.txt [extension] => txt [filename] => test1 ) */ echo '檔案擴展名:',pathinfo($filename,PATHINFO_EXTENSION),"\n";//txt $filename=__FILE__; echo pathinfo($filename,PATHINFO_DIRNAME),"\n";//D:\phpstudy_pro\WWW\phptest echo pathinfo($filename,PATHINFO_BASENAME),"\n";//2-path.php echo pathinfo($filename,PATHINFO_EXTENSION),"\n";//php echo pathinfo($filename,PATHINFO_FILENAME),"\n";//2-path //basename():回傳路徑中的檔案名部分 echo basename($filename),"\n";//2-path.php echo basename($filename,'.php'),"\n";//2-path //dirname():回傳檔案名中路徑部分 echo dirname($filename),"\n";//D:\phpstudy_pro\WWW\phptest //file_exists():檢測檔案或者目錄是否存在 var_dump(file_exists($filename));//D:\phpstudy_pro\WWW\phptest\2-path.php:31:bool(true) touch('aa.txt');
檔案相關操作
檔案創建、洗掉、剪切、重命名、拷貝
//touch($filename):創建檔案 $filename='test1.txt'; var_dump(touch($filename));//bool(true) //unlink($filename):洗掉指定檔案 var_dump(unlink($filename));//bool(true) //檢測檔案存在則洗掉 if(file_exists($filename)){ if(unlink($filename)){ echo '檔案洗掉成功'; }else{ echo '檔案洗掉失敗'; } }else{ echo '要洗掉的檔案不存在';//要洗掉的檔案不存在 } touch($filename); //rename($filename,$newname):重命名或者剪切檔案 $newname='test111.txt'; if(rename($filename,$newname)){ echo '重命名成功';//重命名成功 }else{ echo '重命名失敗'; } //將test123.txt剪切到test目錄下test123.txt $filename='test123.txt'; $path='./test/test123.txt'; if(file_exists($filename)){ if(rename($filename,$path)){ echo '檔案剪切成功'; }else{ echo '檔案剪切失敗';//檔案剪切失敗 } }else{ echo '檔案不存在'; } //copy($source,$dest):復制檔案 $source='2-path.php'; $dest='test123/2-path.php'; if(copy($source,$dest)){ echo '檔案拷貝成功'; }else{ echo '檔案拷貝失敗';//檔案拷貝失敗 } //拷貝遠程檔案需要開啟PHP組態檔中的allow_url_fopen=On var_dump(copy('http://blog.phpfamily.org/wp-content/uploads/2016/09/king-1.jpg','./king-1.jpg'));//bool(false)
檔案內容相關操作
//fopen():打開指定檔案,以指定的方式來打開 $handle=fopen($filename,'r'); var_dump($handle);//resource(5) of type (stream) //fread():讀取檔案內容 一個中文3個位元組 $res=fread($handle,3); echo $res,"\n";//這 $res=fread($handle,3); echo $res,"\n";//是(接著上一次繼續讀取) //filesize() 函式回傳指定檔案的大小 echo filesize($filename),"\n";//55 $res=fread($handle,filesize($filename)); echo $res,"\n";//(接著上一次繼續讀取)讀取全部內容 //一段測驗文本 //這是另一段測驗文本hh //ftell回傳檔案指標讀/寫的位置 echo ftell($handle),"\n";//55 var_dump(fread($handle,21));//string(0) "" //fseek($handle,$num):重置指標 fseek($handle,0); var_dump(fread($handle,21));//string(21) "這是一段測驗文" //fclose($handle):關閉檔案句柄 fclose($handle); var_dump(fread($handle,21));//bool(false)
檔案寫入
$filename=__DIR__.'/aa.txt'; //rb+ 讀寫打開一個二進制檔案,允許讀寫資料,檔案必須存在 $handle=fopen($filename,'rb+'); //fwrite()/fputs():寫入內容 //注意:fwrite向檔案寫入內容,如果之前有內容,會產生覆寫 fwrite($handle,'abcdef',3); fclose($handle); //abc是一段測驗文本 //這是另一段測驗文本hh
檔案追加
//如果檔案不存在會創建, //如果檔案存在,會先將檔案內容截斷為0,接著在開始寫入 $filename="./aa.txt"; //ab+ 追加模式 $handle=fopen($filename,'ab+'); fwrite($handle,PHP_EOL.'hello king'); fclose($handle); //abc是一段測驗文本 //這是另一段測驗文本hh //hello king
截斷檔案
$filename='aa.txt'; $handle=fopen($filename,'rb+'); //ftruncate():截斷檔案 ftruncate($handle,4); fclose($handle); //abcæ 第四個中文被截斷后的奇葩效果哈哈哈哈
檢測檔案指標是否到了檔案末尾
$filename='aa.txt'; $handle=fopen($filename,'rb+'); //feof():檢測檔案指標是否到了檔案末尾 while(!feof($handle)){ //一個字符一個字符讀取 // echo fgetc($handle); //一行一行讀取 echo fgets($handle)."\n"; //一行一行讀取,并且過濾HTML標記 echo strip_tags(fgets($handle))."\n"; //fgetss() 函式從打開的檔案中讀取一行并過濾掉 HTML 和 PHP 標記 echo fgetss($handle); }
fgetcsv() 函式從檔案指標中讀入一行并決議 CSV 欄位
$filename='user.csv'; $handle=fopen($filename,'rb+'); $rows=[]; while($row=fgetcsv($handle)){ $rows[]=$row; } print_r($rows); $handle=fopen('user1.csv','rb+'); while($row=fgetcsv($handle,0,'-')){ print_r($row); }
fputcsv() 函式將行格式化為 CSV 并寫入一個打開的檔案
$filename='user3.csv'; $handle=fopen($filename,'wb+'); $data=[ ['id'=>1,'courseName'=>'ios','courseDesc'=>'this is ios'], ['id'=>2,'courseName'=>'android','courseDesc'=>'this is android'], ['id'=>3,'courseName'=>'swift','courseDesc'=>'this is swift'] ]; foreach($data as $val){ fputcsv($handle,$val,'-'); } fclose($handle);
獲取到檔案中的文本
$filename="./aa.txt"; $string=file_get_contents($filename); echo $string; //abc是一段測驗文本 //這是另一段測驗文本hh //hello king
向檔案中寫入內容
不存在則創建再寫入
$filename='./aa.txt'; //file_put_contents($filename,$data):向檔案中寫入內容 //$data是字串格式 file_put_contents($filename,'this is a test'); $res=file_get_contents($filename); print_r($res);//this is a test echo "\n"; //如果不想覆寫之前的內容,可以先把檔案中讀取出來,接著再來寫入 $string=file_get_contents($filename); $data=$string.'this is a test'; file_put_contents($filename,$data); $res=file_get_contents($filename); print_r($res);//this is a testthis is a test //如果檔案不存在,file_put_contents()會創建這個檔案 $filename='aaa.txt'; $data=[ ['a','b','c'], ['d','e','f'] ]; file_put_contents($filename,$data); //陣列或者物件序列化之后寫入檔案 $data=['a','b','c']; $data=serialize($data); file_put_contents($filename,$data); $res=file_get_contents($filename); print_r(unserialize($res)); //( //[0] => a //[1] => b //[2] => c //) // 將陣列或者物件轉換成json之后寫入檔案 $data=[ ['a','b','c'], ['d','e','f'] ]; $data=json_encode($data); file_put_contents($filename,$data); $res=json_decode(file_get_contents($filename)); print_r($res); // //Array //( // [0] => Array // ( // [0] => a // [1] => b //[2] => c // ) // // [1] => Array //( // [0] => d // [1] => e //[2] => f // ) // //)
常用函式封裝:
【檔案常用操作函式封裝】
/** * 創建檔案操作 * @method create_file * @param string $filename 檔案名 * @return boolean true|false */ function create_file(string $filename){ //檢測檔案是否存在,不存在則創建 if(file_exists($filename)){ return false; } //檢測目錄是否存在,不存在則創建 if(!file_exists(dirname($filename))){ //創建目錄,可以創建多級 mkdir(dirname($filename),0777,true); } if(file_put_contents($filename,'')!==false){ return true; } return false; } var_dump(create_file('2.txt'));//bool(true) var_dump(create_file('a/4.txt'));//bool(true) /** * 洗掉檔案操作 * @method del_file * @param string $filename 檔案名 * @return boolean true|false */ function del_file(string $filename){ //檢測洗掉的檔案是否存在,并且是否有權限操作 if(!file_exists($filename)||!is_writable($filename)){ return false; } if(unlink($filename)){ return true; } return false; } var_dump(del_file('a/3.txt'));//bool(false) /** * 拷貝檔案操作 * @method copy_file * @param string $filename 檔案名 * @param string $dest 指定目錄 * @return boolean true|false */ function copy_file(string $filename,string $dest){ //檢測$dest是否是目標并且這個目錄是否存在,不存在則創建 if(!is_dir($dest)){ mkdir($dest,0777,true); } $destName=$dest.DIRECTORY_SEPARATOR.basename($filename); //檢測目標路徑下是否存在同名檔案 if(file_exists($destName)){ return false; } //拷貝檔案 if(copy($filename,$destName)){ return true; } return false; } var_dump(copy_file('2.txt','a'));//bool(true) /** * 重命名操作 * @method rename_file * @param string $oldName 原檔案 * @param string $newName 新檔案名 * @return boolean true|false */ function rename_file(string $oldName,string $newName){ //檢測原檔案并且存在 if(!is_file($oldName)){ return false; } //得到原檔案所在的路徑 $path=dirname($oldName); $destName=$path.DIRECTORY_SEPARATOR.$newName; if(is_file($destName)){ return false; } if(rename($oldName,$newName)){ return true; } return false; } // var_dump(rename_file('2.txt','333.txt')); /** * 剪切檔案操作 * @method cut_file * @param string $filename 原檔案 * @param string $dest 目標路徑 * @return boolean true|false */ function cut_file(string $filename,string $dest){ if(!is_file($filename)){ return false; } if(!is_dir($dest)){ mkdir($dest,0777,true); } $destName=$dest.DIRECTORY_SEPARATOR.basename($filename); if(is_file($destName)){ return false; } if(rename($filename,$destName)){ return true; } return false; } var_dump(cut_file('333.txt','a')); var_dump(cut_file('22.txt','a'));
【檔案資訊相關函式封裝】
/** * 回傳檔案資訊 * @method get_file_info * @param string $filename 檔案名 * @return mixed 檔案資訊相關陣列|false */ function get_file_info(string $filename){ if(!is_file($filename)||!is_readable($filename)){ return false; } return [ 'atime'=>date("Y-m-d H:i:s",fileatime($filename)), 'mtime'=>date("Y-m-d H:i:s",filemtime($filename)), 'ctime'=>date("Y-m-d H:i:s",filectime($filename)), 'size'=>trans_byte(filesize($filename)), 'type'=>filetype($filename) ]; } var_dump(get_file_info('22.txt')); /** * 位元組單位轉換的函式 * @method trans_byte * @param int $byte 位元組 * @param integer $precision 默認精度,保留小數點后2位 * @return string 轉換之后的字串 */ function trans_byte(int $byte,int $precision=2){ $kb=1024; $mb=1024*$kb; $gb=1024*$mb; $tb=1024*$gb; if($byte<$kb){ return $byte.'B'; }elseif($byte<$mb){ return round($byte/$kb,$precision).'KB'; }elseif($byte<$gb){ return round($byte/$mb,$precision).'MB'; }elseif($byte<$tb){ return round($byte/$gb,$precision).'GB'; }else{ return round($byte/$tb,$precision).'TB'; } } var_dump(trans_byte(12345678));//string(7) "11.77MB"
【檔案讀寫函式封裝】
/** * 讀取檔案內容,回傳字串 * @method read_file * @param string $filename 檔案名 * @return mixed 檔案內容|false */ function read_file(string $filename){ //檢測是否是一個檔案并且檔案已存在 if(is_file($filename) && is_readable($filename)){ return file_get_contents($filename); } return false; } var_dump(read_file('232.txt'));//bool(false) /** * 讀取檔案中的內容到陣列中 * @method read_file_array * @param string $filename 檔案名 * @param boolean $skip_empty_lines 是否過濾空行 * @return mixed array|false */ function read_file_array(string $filename,bool $skip_empty_lines=false){ if(is_file($filename)&&is_readable($filename)){ if($skip_empty_lines){ return file($filename,FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES); }else{ return file($filename); } } return false; } var_dump(read_file_array('22.txt',true)); /** * 向檔案中寫入內容 * @method write_file * @param string $filename 檔案名 * @param mixed $data 資料,陣列和物件需要處理 * @return boolean true|false */ function write_file(string $filename,$data){ $dirname=dirname($filename); //檢測目標路徑是否存在 if(!file_exists($dirname)){ mkdir($dirname,0777,true); } //判斷內容是否是陣列或者物件 if(is_array($data)||is_object($data)){ //序列化資料 $data=serialize($data); } //向檔案中寫入內容 if(file_put_contents($filename,$data)!==false){ return true; }else{ return false; } } var_dump(write_file('c/1.txt',['a','b','c'])); /** * 向檔案中寫入內容,之前內容不清空 * @method write_file1 * @param string $filename 檔案名 * @param mixed $data 資料 * @param boolean $clearFlag 是否清空檔案 * @return boolean true|false */ function write_file1(string $filename,$data,bool $clearFlag=false){ $dirname=dirname($filename); //檢測目標路徑是否存在 if(!file_exists($dirname)){ mkdir($dirname,0777,true); } //檢測檔案是否存在并且可讀 if(is_file($filename)&&is_readable($filename)){ //讀取檔案內容,之后和新寫入的內容拼裝到一起 if(filesize($filename)>0){ $srcData=file_get_contents($filename); } } //判斷內容是否是陣列或者物件 if(is_array($data)||is_object($data)){ //序列化資料 $data=serialize($data); } //拼裝到一起 $data=$srcData.$data; //向檔案中寫入內容 if(file_put_contents($filename,$data)!==false){ return true; }else{ return false; } } var_dump(write_file1('22.txt','hello world')); /** * 截斷檔案到指定大小 * @method truncate_file * @param string $filename 檔案名 * @param int $length 長度 * @return boolean true|false */ function truncate_file(string $filename,int $length){ //檢測是否是檔案 if(is_file($filename)&&is_writable($filename)){ $handle=fopen($filename,'r+'); $length=$length<0?0:$length; ftruncate($handle,$length); fclose($handle); return true; } return false; } var_dump(truncate_file('22.txt',2));
【檔案下載函式封裝】
/** * 下載檔案 * @method down_file * @param string $filename 檔案名 * @param array $allowDownExt 允許下載的檔案型別 * @return void */ function down_file(string $filename,array $allowDownExt=array('jpeg','jpg','png','gif','txt','html','php','rar','zip')){ //檢測下載檔案是否存在,并且可讀 if(!is_file($filename)||!is_readable($filename)){ return false; } //檢測檔案型別是否允許下載 $ext=strtolower(pathinfo($filename,PATHINFO_EXTENSION)); if(!in_array($ext,$allowDownExt)){ return false; } //通過header()發送頭資訊 //告訴瀏覽器輸出的是位元組流 header('Content-Type:application/octet-stream'); //告訴瀏覽器回傳的檔案大小是按照位元組進行計算的 header('Accept-Ranges: bytes'); //告訴瀏覽器回傳的檔案大小 header('Accept-Length: '.filesize($filename)); //告訴瀏覽器檔案作為附件處理,告訴瀏覽器最終下載完的檔案名稱 header('Content-Disposition: attachment;filename=king_'.basename($filename)); //讀取檔案中的內容 readfile($filename); exit; } 規定每次讀取檔案的位元組數為1024位元組,直接輸出資料 /** * 下載檔案 * @method down_file * @param string $filename 檔案名 * @param array $allowDownExt 允許下載的檔案型別 * @return void */ function down_file1(string $filename,array $allowDownExt=array('jpeg','jpg','png','gif','txt','html','php','rar','zip')){ //檢測下載檔案是否存在,并且可讀 if(!is_file($filename)||!is_readable($filename)){ return false; } //檢測檔案型別是否允許下載 $ext=strtolower(pathinfo($filename,PATHINFO_EXTENSION)); if(!in_array($ext,$allowDownExt)){ return false; } //通過header()發送頭資訊 //告訴瀏覽器輸出的是位元組流 header('Content-Type:application/octet-stream'); //告訴瀏覽器回傳的檔案大小是按照位元組進行計算的 header('Accept-Ranges: bytes'); $filesize=filesize($filename); //告訴瀏覽器回傳的檔案大小 header('Accept-Length: '.$filesize); //告訴瀏覽器檔案作為附件處理,告訴瀏覽器最終下載完的檔案名稱 header('Content-Disposition: attachment;filename=king_'.basename($filename)); //讀取檔案中的內容 //規定每次讀取檔案的位元組數為1024位元組,直接輸出資料 $read_buffer=1024; $sum_buffer=0; $handle=fopen($filename,'rb'); while(!feof($handle) && $sum_buffer<$filesize){ echo fread($handle,$read_buffer); $sum_buffer+=$read_buffer; } fclose($handle); exit; } //在具體頁面呼叫時 require_once 'file.func.php'; $filename=$_GET['filename']; down_file1($filename);
【檔案上傳函式封裝】
/** * 單檔案上傳 * @method upload_file * @param array $fileInfo 上傳檔案的資訊,是一個陣列 * @param string $uploadPath 檔案上傳默認路徑 * @param boolean $imageFlag 是否檢測真實圖片 * @param array $allowExt 允許上傳的檔案型別 * @return mixed 成功回傳檔案最終保存路徑及名稱,失敗回傳false */ function upload_file(array $fileInfo,string $uploadPath='./uploads',bool $imageFlag=true,array $allowExt=array('jpeg','jpg','png','gif'),int $maxSize=2097152){ define('UPLOAD_ERRS',[ 'upload_max_filesize'=>'超過了PHP組態檔中upload_max_filesize選項的值', 'form_max_size'=>'超過了表單MAX_FILE_SIZE選項的值', 'upload_file_partial'=>'檔案部分被上傳', 'no_upload_file_select'=>'沒有選擇上傳檔案', 'upload_system_error'=>'系統錯誤', 'no_allow_ext'=>'非法檔案型別', 'exceed_max_size'=>'超出允許上傳的最大值', 'not_true_image'=>'檔案不是真實圖片', 'not_http_post'=>'檔案不是通過HTTP POST方式上傳上來的', 'move_error'=>'檔案移動失敗' ]); //檢測是否上傳是否有錯誤 if($fileInfo['error']===UPLOAD_ERR_OK){ //檢測上傳檔案型別 $ext=strtolower(pathinfo($fileInfo['name'],PATHINFO_EXTENSION)); if(!in_array($ext,$allowExt)){ echo UPLOAD_ERRS['no_allow_ext']; return false; } //檢測上傳檔案大小是否符合規范 if($fileInfo['size']>$maxSize){ echo UPLOAD_ERRS['exceed_max_size']; return false; } //檢測是否是真實圖片 if($imageFlag){ if(@!getimagesize($fileInfo['tmp_name'])){ echo UPLOAD_ERRS['not_true_image']; return false; } } //檢測檔案是否通過HTTP POST方式上傳上來的 if(!is_uploaded_file($fileInfo['tmp_name'])){ return UPLOAD_ERRS['not_http_post']; } //檢測目標目錄是否存在,不存在則創建 if(!is_dir($uploadPath)){ mkdir($uploadPath,0777,true); } //生成唯一檔案名,防止重名產生覆寫 $uniName=md5(uniqid(microtime(true),true)).'.'.$ext; $dest=$uploadPath.DIRECTORY_SEPARATOR.$uniName; //移動檔案 if(@!move_uploaded_file($fileInfo['tmp_name'],$dest)){ echo UPLOAD_ERRS['move_error']; return false; } echo '檔案上傳成功'; return $dest; }else{ switch($fileInfo['error']){ case 1: // $mes='超過了PHP組態檔中upload_max_filesize選項的值'; $mes=UPLOAD_ERRS['upload_max_filesize']; break; case 2: $mes=UPLOAD_ERRS['form_max_size']; break; case 3: $mes=UPLAOD_ERRS['upload_file_partial']; break; case 4: $mes=UPLOAD_ERRS['no_upload_file_select']; break; case 6: case 7: case 8: $mes=UPLAOD_ERRS['upload_system_error']; break; } echo $mes; return false; } } //在具體頁面呼叫時 require_once 'file.func.php'; $fileInfo=$_FILES['myFile']; var_dump(upload_file($fileInfo));
【檔案壓縮與解壓縮函式封裝】
/** * 壓縮單個檔案 * @method zip_file * @param string $filename 檔案名 * @return boolean true|false */ function zip_file(string $filename){ if(!is_file($filename)){ return false; } $zip=new ZipArchive(); $zipName=basename($filename).'.zip'; //打開指定壓縮包,不存在則創建,存在則覆寫 if($zip->open($zipName,ZipArchive::CREATE|ZipArchive::OVERWRITE)){ //將檔案添加到壓縮包中 if($zip->addFile($filename)){ $zip->close(); @unlink($filename); return true; }else{ return false; } }else{ return false; } } // var_dump(zip_file('22.txt')); // func_get_args // test1.zip /** * 多檔案壓縮 * @method zip_files * @param string $zipName 壓縮包的名稱,.zip結尾 * @param string $files 需要壓縮檔案名,可以是多個 * @return boolean true|false */ function zip_files(string $zipName,...$files){ //檢測壓縮包名稱是否正確 $zipExt=strtolower(pathinfo($zipName,PATHINFO_EXTENSION)); if('zip'!==$zipExt){ return false; } $zip=new ZipArchive(); if($zip->open($zipName,ZipArchive::CREATE|ZipArchive::OVERWRITE)){ foreach($files as $file){ if(is_file($file)){ $zip->addFile($file); } } $zip->close(); return true; }else{ return false; } } // var_dump(zip_files('test1.zip','22.txt')); // var_dump(zip_files('test2.zip','doUpload.php','downLoad.html','upload.html')); /** * 解壓縮 * @method unzip_file * @param string $zipName 壓縮包名稱 * @param string $dest 解壓到指定目錄 * @return boolean true|false */ function unzip_file(string $zipName,string $dest){ //檢測要解壓壓縮包是否存在 if(!is_file($zipName)){ return false; } //檢測目標路徑是否存在 if(!is_dir($dest)){ mkdir($dest,0777,true); } $zip=new ZipArchive(); if($zip->open($zipName)){ $zip->extractTo($dest); $zip->close(); return true; }else{ return false; } } // var_dump(unzip_file('test2.zip','a'));
$_FILES 引數詳解:
$_FILES["file"]["name"] – 被上傳檔案的名稱
$_FILES["file"]["type"] – 被上傳檔案的型別
$_FILES["file"]["size"] – 被上傳檔案的大小,以位元組計
$_FILES["file"]["tmp_name"] – 存盤在服務器的檔案的臨時副本的名稱
$_FILES["file"]["error"] – 由檔案上傳導致的錯誤代碼
$_FILES["file"]["error"]中的["error"]值情況:
UPLOAD_ERR_OK
0:沒有錯誤發生,檔案上傳成功
UPLOAD_ERR_INI_SIZE
1:上傳的檔案超過了 php.ini 中 upload_max_filesize(默認情況為 2M) 選項限制的值
UPLOAD_ERR_FORM_SIZE
2:上傳檔案的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值
UPLOAD_ERR_PARTIAL
3:檔案只有部分被上傳
UPLOAD_ERR_NO_FILE
4:沒有檔案被上傳
5:傳檔案大小為 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/86737.html
標籤:PHP
上一篇:php實作簡易留言板效果
下一篇:PHP的一些安全設定
