1. 程式人生 > >PHP文件域上傳

PHP文件域上傳

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文件域上傳