본문 바로가기
PHP

image file

by 영감은어디에 2024. 10. 10.

<?php
$moved         = false;  
$message       = '';   
$error         = ''; 
$upload_path   = 'uploads/';   
$max_size      = 5242880;  //5메가
$allowed_types = ['image/jpeg', 'image/png', 'image/gif',];  
$allowed_exts  = ['jpeg', 'jpg', 'png', 'gif',];

function create_filename($filename, $upload_path)
{
    $basename   = pathinfo($filename, PATHINFO_FILENAME);  
    $extension  = pathinfo($filename, PATHINFO_EXTENSION); 
    $basename   = preg_replace('/[^A-z0-9]/', '-', $basename); 
    $filename   = $basename . '.' . $extension;   
    $i          = 0;                              
    while (file_exists($upload_path . $filename)) { 
        $i        = $i + 1;  
        $filename = $basename . $i . '.' . $extension; 
    }
    return $filename; 
}

if ($_SERVER['REQUEST_METHOD'] == 'POST') {   
    $error = ($_FILES['image']['error'] === 1) ? 'too big ' : ''; 

    if ($_FILES['image']['error'] == 0) {  
        //사이즈
        $error  .= ($_FILES['image']['size'] <= $max_size) ? '' : 'too big ';
        //타입
        $type   = mime_content_type($_FILES['image']['tmp_name']);        
        $error .= in_array($type, $allowed_types) ? '' : 'wrong type ';
        //확장자
        $ext    = strtolower(pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION));
        $error .= in_array($ext, $allowed_exts) ? '' : 'wrong file extension ';

        //에러없으면 파일 임시에서 최종으로 롬김
        if (!$error) {
          $filename    = create_filename($_FILES['image']['name'], $upload_path);
          $destination = $upload_path . $filename;
          $moved       = move_uploaded_file($_FILES['image']['tmp_name'], $destination);
        }
    }
    if ($moved === true) {     
        $message = 'Uploaded:<br><img src="' . $destination . '">'; 
    } else {           
        $message = '<b>Could not upload file:</b> ' . $error; 
    }
}
?>

<?= $message ?>
  <form method="POST" action="validate-file.php" enctype="multipart/form-data">
    <label for="image"><b>Upload file:</b></label>
    <input type="file" name="image" id="image"><br>
    <input type="submit" value="Upload">
  </form>

'PHP' 카테고리의 다른 글

Updating data - category  (0) 2024.10.12
getting data  (0) 2024.10.11
sql  (0) 2024.10.11
date  (0) 2024.10.10
form  (0) 2024.10.10
내장함수, number, update  (0) 2024.10.10
object  (0) 2024.10.09
function  (0) 2024.10.09