PHP文件域上傳
阿新 • • 發佈:2019-01-23
size Enctype 格式 form var win echo data vat
PHP中使用文件域上傳文件,需要幾個步驟,首先先判斷有無文件域,然後判斷是否選擇了文件,最後判斷文件是否上傳成功。
需要註意的是 表單中有文件域,必須將method設置為post, enctype設置為multipart/form-data
在文件上傳時會給服務端以數組的形式返回幾個值,如下:
//array(5) { // ["name"]=> // string(25) "mmexport1534732827710.jpg" // ["type"]=> // string(10) "image/jpeg" // ["tmp_name"]=> // string(26) "C:\Windows\Temp\phpD9E.tmp" // ["error"]=> // int(0) // ["size"]=> // int(145606) //}
其中‘‘name"為上傳文件名,"type"為上傳文件類型,"tmp_name"為上傳文件後所存放的路徑,"error"為上傳文件的錯誤問題,"size"為上傳文件的大小。
具體代碼如下:
<?php function upload() { if (!(isset($_FILES[‘avatar‘]))) { //是否有文件域 $GLOBALS[‘message‘] = ‘沒有上傳文件‘; return; } $avatar = $_FILES[‘avatar‘]; var_dump($avatar); if ($avatar[‘error‘]!==UPLOAD_ERR_OK) { //服務端沒有接受到上傳的文件 $GLOBALS[‘message‘] = ‘上傳失敗‘; return; } //接收到了文件 //將文件從臨時目錄移動到網站範圍內 $source=$avatar[‘tmp_name‘]; //源文件路徑 $target=‘./uploads/‘ . $avatar[‘name‘]; //目標路徑 //==>./uploads/mmexport1534732827710.jpg$moved=move_uploaded_file($source, $target); if (!$moved) { $GLOBALS[‘message‘] = ‘上傳失敗‘; return; } //移動成功===>上傳成功 $GLOBALS[‘message‘] = ‘上傳成功‘; } if ($_SERVER[‘REQUEST_METHOD‘]===‘POST‘) { //接受文件 使用一個 叫做$_FILES 超全局成員 //var_dump($_FILES); upload(); } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文件域</title> </head> <body> <!-- 表單中有文件域,必須將method設置為post, enctype設置為multipart/form-data --> <!-- enctype 默認是urlencoded 格式 key1=value1&key2=value2 --> <form action="<?php echo $_SERVER[‘PHP_SELF‘]; ?>" method="post" enctype="multipart/form-data"> <input type="file" name="avatar"> <button>上傳</button> <?php if (isset($message)): ?> <?php echo $message ?> <?php endif ?> </form> </body> </html>
PHP文件域上傳