Ví dụ về tệp bài đăng php curl multipart/form-data

Qua 4 bài vừa rồi bạn thấy CURL khá hay phải không nào?

Bài viết này đã được đăng tại freetuts. net , không được sao chép dưới mọi hình thức.

To upload file in php chúng ta thực hiện ba thao tác

  • Create file upload.php to upload file
  • Tạo tệp curl.php sử dụng CURL để gọi tệp tải lên. php
  • Tạo tệp form.php trong đó có một biểu mẫu tải lên  và  có thuộc tính   enctype="multipart/form-data" và hành động của con trỏ đến tệp curl.php

To Unknown than you xem sơ đồ dưới đây

Nhìn vào sơ đồ bạn thấy hơi khác so với thông thường không phải thông thườ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ử dụng PHP CURL để upload file nên phải thông qua quy trình như sơ đồ vậy

Bài viết này đã được đăng tại [free tuts. bọc lưới]

1. mẫu hồ sơ. php

    
        File Upload Using PHP and cURL - freetuts.net
    
    
        
            
Upload
 

2. tập tin cuộn tròn. 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['//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. tải lên tệp. 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 bất thường là chúng ta sử dụng hàm
// 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['//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';
    }
}
0 chứ không phải hàm
// 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['//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';
    }
}
1 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ó bị lỗi không, hy vọng là được. Cũng khá đơ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 để che thư viện CURL  hơn thôi, chúc các bạn học giỏi nhé

Chủ Đề