PHP CURL
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

Bài 05: Sử dụng PHP CURL để upload file

Qua 4 bài vừa rồi bạn thấy CURL khá là hay phải không nào? Thật ra thì học tới bài này là bạn đã rành nó rồi đấy, nhưng mình muốn đưa ra thật nhiều ví dụ nên trong bài này chúng ta sẽ xây dựng chức năng upload file với PHP CURL nhé.

Để upload file trong php chúng ta thực hiện ba thao tác:

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.
  • Tạo file upload.php để upload file
  • Tạo file curl.php sử dụng CURL để gọi đến file upload.php
  • Tạo file form.php trong đó có một form upload  và  có thuộc tính  enctype="multipart/form-data" và action của nó trỏ đến file curl.php

Để rõ hơn các bạn xem sơ đồ dưới đây:

upload-file-curl-php

Nhìn vào sơ đồ bạn thấy hơi khác so với thông thường phải không nào, thông thường thì chúng ta chỉ cần 2 file thôi đó là file form.phpupload.php. Nhưng ở đây chúng ta đang sử cụng PHP CURL để upload file nên phải thông qua quy trình như sơ đồ vậy.

1. File form.php

<html>
    <head>
        <title>File Upload Using PHP and cURL - freetuts.net</title>
    </head>
    <body>
        <form action="curl.php" method="post" enctype="multipart/form-data">
            <table border="1">
                <tr>
                    <td>Upload</td>
                    <td><input name="file" type="file" id="file"/></td>
                </tr>
                <tr>
                    <td>&nbsp;</td>
                    <td><input name="btnUpload" type="submit" value="Upload" /></td>
                </tr>
            </table>
        </form>
    </body>
</html>

2. File curl.php

// Nếu submit form
if (isset($_POST['btnUpload']))
{
    // Lấy thông tin file upload
    $filename = $_FILES['file']['name'];
    $filedata = $_FILES['file']['tmp_name'];
    $filesize = $_FILES['file']['size'];
    
    // Nếu file OK
    if ($filedata != '')
    {
        $headers = array("Content-Type:multipart/form-data");
        // Đối với filedata phải có ký hiệu @ ở trước
        $postfields = array("filedata" => "@$filedata", "filename" => $filename);
        
        // Khởi tạo CURL
        // URL trỏ đến file upload.php
        $ch = curl_init('http://localhost/2_develop/tour/upload.php');
        
        // Cấu hình có sử dụng header
        // Vì chúng ta đang gửi file nên header của nó
        // phải ở dạng Content-Type:multipart/form-data
        curl_setopt($ch, CURLOPT_HEADER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        
        // Cấu hình sử dụng method POST
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
        
        // Thiết lập có gửi file và thông tin file 
        curl_setopt($ch, CURLOPT_INFILESIZE, $filesize);
        
        // Cấu hình return 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        
        // Thực thi
        curl_exec($ch);
        
        // Nếu không tồn tại lỗi nào trong CURL
        if(!curl_errno($ch))
        {
            $info = curl_getinfo($ch);
            if ($info['http_code'] == 200){
                echo 'Upload thành công';
            }
        }
        else
        {
            echo curl_error($ch);
        }
        
        // Đóng CURL
        curl_close($ch);
    }
    else
    {
        echo 'Bạn chưa chọn file để upload';
    }
}

3. File upload.php

// Đường dẫn upload
$uploadpath = "upload/";

// Nhận thông tin
$filedata = $_FILES['filedata']['tmp_name'];
$filename = $_POST['filename'];


if ($filedata != '' && $filename != ''){
    // Dùng hàm copy để lưu vào thay vì hàm move_upload_file như thông thường
    copy($filedata,$uploadpath.$filename);   
}
Trong file này các bạn thấy sự bất thường đó là chúng ta sử dụng hàm copy chứ không phải hàm move_upload_file nhé.

Lời kết

Các bạn chạy file form.php lên và thực hiện upload thử xem có được không, hy vọng là được. Cũng khá là đơn giản phải không nào, bài này chỉ mang tính chất học tập, làm bài tập để rành thư viện CURL  hơn thôi,  chúc các bạn học tốt nhé.

Cùng chuyên mục:

Hàm key_exists() trong PHP

Hàm key_exists() trong PHP

Cách sử dụng key_exists() trong PHP

Hàm mysqli_fetch_row() trong PHP

Hàm mysqli_fetch_row() trong PHP

Cách sử dụng mysqli_fetch_row() trong PHP

Hàm end() trong PHP

Hàm end() trong PHP

Cách sử dụng end() trong PHP

Hàm mysqli_field_count() trong PHP

Hàm mysqli_field_count() trong PHP

Cách sử dụng mysqli_field_count() trong PHP

Hàm count() trong PHP

Hàm count() trong PHP

Cách sử dụng count() trong PHP

Hàm mysqli_field_seek() trong PHP

Hàm mysqli_field_seek() trong PHP

Cách sử dụng mysqli_field_seek() trong PHP

Hàm compact() trong PHP

Hàm compact() trong PHP

Cách sử dụng compact() trong PHP

Hàm mysqli_field_tell() trong PHP

Hàm mysqli_field_tell() trong PHP

Cách sử dụng mysqli_field_tell() trong PHP

Hàm array_values() trong PHP

Hàm array_values() trong PHP

Cách sử dụng array_values() trong PHP

Hàm mysqli_free_result() trong PHP

Hàm mysqli_free_result() trong PHP

Cách sử dụng mysqli_free_result() trong PHP

Hàm array_unshift() trong PHP

Hàm array_unshift() trong PHP

Cách sử dụng array_unshift() trong PHP

Hàm mysqli_get_charset() trong PHP

Hàm mysqli_get_charset() trong PHP

Cách sử dụng mysqli_get_charset() trong PHP

Hàm array_shift() trong PHP

Hàm array_shift() trong PHP

Cách sử dụng array_shift() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Hàm mysqli_get_client_stats() trong PHP

Cách sử dụng mysqli_get_client_stats() trong PHP

Hàm array_unique() trong PHP

Hàm array_unique() trong PHP

Cách sử dụng array_unique() trong PHP

Hàm mysqli_get_client_version() trong PHP

Hàm mysqli_get_client_version() trong PHP

Cách sử dụng mysqli_get_client_version() trong PHP

Hàm array_uintesect() trong PHP

Hàm array_uintesect() trong PHP

Cách sử dụng array_uintesect() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Hàm mysqli_get_connection_stats() trong PHP

Cách sử dụng mysqli_get_connection_stats() trong PHP

Hàm array_sum() trong PHP

Hàm array_sum() trong PHP

Cách sử dụng array_sum() trong PHP

Hàm mysqli_get_host_info() trong PHP

Hàm mysqli_get_host_info() trong PHP

Cách sử dụng mysqli_get_host_info() trong PHP

Top