Mẫu code upload ảnh lên server bằng PHP

Hướng dẫn từng bước viết code upload (đăng) ảnh lên server bằng ngôn ngữ PHP

Tải hình ảnh lên máy chủ web là một chức năng phổ biến trong phát triển web, trong hướng dẫn này, chúng tôi sẽ giới thiệu cách tải hình ảnh lên bằng PHP.

Bạn có thể học cách sử dụng PHP để tải hình ảnh lên máy chủ.

Tạo biểu mẫu để tải lên hình ảnh

Chúng ta sẽ sử dụng hình thức html để tải lên hình ảnh. Để gửi dữ liệu hình ảnh, chúng ta nên đặt method = "post"enctype = "multipart/form-data" .

Ví dụ

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        <h2> Tải lên tệp </h2>
        <label for ="fileSelect"> Tên tệp: </label>
        <input type="file" name="photo" id = "fileSelect">
        <input type="submit" name="submit" value ="Tải lên">
        <p> <strong> Lưu ý: </strong> Chỉ cho phép các định dạng .jpg, .jpeg, .gif, .png với kích thước tối đa là 5 MB. </p>
    </form>
    </body>
</html>

Bạn không thể sử dụng phương thức get để tải hình ảnh lên, vì phương thức http get chỉ có thể gửi một lượng nhỏ dữ liệu.

tải lên hình ảnh bằng php - hướng dẫn từng bước

Đoạn mã này sẽ gửi dữ liệu hình ảnh đến upload.php , upload.php sẽ nhận dữ liệu hình ảnh và lưu vào máy chủ web.

Làm thế nào để nhận dữ liệu hình ảnh và lưu hình ảnh trong upload.php?

upload.php sẽ sử dụng $ _FILES để nhận dữ liệu hình ảnh và các thông tin hình ảnh khác, chẳng hạn như kích thước hình ảnh, loại hình ảnh và tên hình ảnh.

upload.php đã nhận được dữ liệu hình ảnh, nó sẽ lưu hình ảnh đã tải lên này vào một đường dẫn tạm thời, chúng ta sẽ sử dụng move_uploaded_fil () để di chuyển tệp tạm thời này đến thư mục đích của chúng ta.

Đảm bảo rằng tệp được tải lên là hình ảnh

Để tải lên hình ảnh, chúng ta nên đảm bảo rằng tệp tải lên là một hình ảnh, chúng ta nên kiểm tra tên tệp hoặc loại mime của tệp.

Ví dụ

        $allowed = array("jpg" => "image/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png");
        $filename = $_FILES["photo"]["name"];
        $filetype = $_FILES["photo"]["type"];
        $filesize = $_FILES["photo"]["size"];
    
        // Xác minh phần mở rộng tệp
        $ext = pathinfo($filename, PATHINFO_EXTENSION);
        if(!array_key_exists($ext, $allowed)) die("Lỗi: Vui lòng chọn định dạng tệp hợp lệ.");

Đảm bảo kích thước tệp hợp lệ

Chúng tôi nên giới hạn kích thước tối đa của hình ảnh, điều này rất hữu ích cho máy chủ web của bạn.

Ví dụ

         $maxsize = 5 * 1024 * 1024;
        if($filesize > $maxsize) die("Lỗi: Kích thước tệp lớn hơn giới hạn cho phép.");

Lưu hình ảnh đã tải lên

Trong ví dụ này, chúng tôi sẽ tải hình ảnh lên thư mục tải lên , chúng tôi có thể move_uploaded_file() để lưu các tệp đã tải lên.

Ví dụ

if(in_array($filetype, $allowed)){
            // Kiểm tra xem tệp có tồn tại hay không trước khi tải lên
            if(file_exists("upload/" . $filename)){
                echo $filename . " đã tồn tại.";
            } else{
				//echo $_FILES["photo"]["tmp_name"];
				if(move_uploaded_file($_FILES["photo"]["tmp_name"], "upload/" . $filename)){ // có thể có lỗi
					echo "Tệp của bạn đã được tải lên thành công.";
				}else{
					echo "Lỗi: không thể di chuyển tệp đến upload/";
				}
            } 
        } else{
            echo "Lỗi: Đã xảy ra sự cố khi tải tệp của bạn lên. Vui lòng thử lại."; 
        }

Mã đầy đủ của upload.php ở đây:

Ví dụ

<?php
// Kiểm tra xem biểu mẫu đã được gửi chưa
if($_SERVER["REQUEST_METHOD"] == "POST"){
     // Kiểm tra xem tệp đã được tải lên mà không có lỗi hay không
    if(isset($_FILES["photo"]) && $_FILES["photo"]["error"] == 0){
        $allowed = array("jpg" => "image/jpg", "jpeg" => "image/jpeg", "gif" => "image/gif", "png" => "image/png");
        $filename = $_FILES["photo"]["name"];
        $filetype = $_FILES["photo"]["type"];
        $filesize = $_FILES["photo"]["size"];
    
        // Xác minh phần mở rộng tệp
        $ext = pathinfo($filename, PATHINFO_EXTENSION);
        if(!array_key_exists($ext, $allowed)) die("Lỗi: Vui lòng chọn định dạng tệp hợp lệ.");
    
        // Xác minh kích thước tệp - tối đa 5MB
        $maxsize = 5 * 1024 * 1024;
        if($filesize > $maxsize) die("Lỗi: Kích thước tệp lớn hơn giới hạn cho phép.");
    
        // Xác minh loại MIME của tệp
        if(in_array($filetype, $allowed)){
            // Kiểm tra xem tệp có tồn tại hay không trước khi tải lên
            if(file_exists("upload/" . $filename)){
                echo $filename . " đã tồn tại.";
            } else{
				//echo $_FILES["photo"]["tmp_name"];
				if(move_uploaded_file($_FILES["photo"]["tmp_name"], "upload/" . $filename)){ // có thể có lỗi
					echo "Tệp của bạn đã được tải lên thành công.";
				}else{
					echo "Lỗi: không thể di chuyển tệp đến upload/";
				}
            } 
        } else{
            echo "Lỗi: Đã xảy ra sự cố khi tải tệp của bạn lên. Vui lòng thử lại."; 
        }
    } else{
        echo "Error: " . $_FILES["photo"]["error"];
    }
}
?>