Latest Post

Tăng thứ hạng và truy cập tự nhiên với 10 phương pháp SEO hay nhất Kiếm Tiền Online (mmo): Khái Niệm và Các Hình Thức Phổ Biến

Có nhiều cách để tải lên tệp lên máy chủ bằng PHP, bao gồm việc sử dụng biểu mẫu, Ajax, FTP, SCP và nhiều phương pháp khác. Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách sử dụng cURL để tải lên tệp đến máy chủ sử dụng PHP.

Để thực hiện hướng dẫn này, bạn sẽ cần 3 tệp sau:

  1. curl.php: Đây là tệp script cURL để đọc và xử lý việc tải lên tệp đến máy chủ (phía máy khách).
  2. upload.php: Đây là tệp xử lý nhận tệp từ máy khách (phía máy chủ).
  3. data.txt: Đây là tệp dữ liệu chúng ta sẽ tải lên.

Xử lý upload file tới server

File: curl.php

<?php
// CURL init
$curl = curl_init();

$fields = [
    'file' => curl_file_create('data.txt'),
    'description' => 'Upload file to server by url (vinasupport.com)'
];

// Set CURL options
curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://localhost/upload.php',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_VERBOSE => 1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POSTFIELDS => $fields,
    CURLOPT_SSL_VERIFYHOST => false,
    CURLOPT_SSL_VERIFYPEER => false
));

//create the multiple cURL handle
$mh = curl_multi_init();

//add the handle
curl_multi_add_handle($mh, $curl);

//execute the handle
do {
    $status = curl_multi_exec($mh, $active);
    if ($active) {
        curl_multi_select($mh);
    }
} while ($active && $status == CURLM_OK);

//close the handles
curl_multi_remove_handle($mh, $curl);
curl_multi_close($mh);

// all of our requests are done, we can now access the results
echo curl_multi_getcontent($curl);

Khi bạn thực hiện việc này trên máy chủ cục bộ (local), bạn nên tắt xác thực chứng chỉ SSL bằng cách đặt hai tùy chọn là CURLOPT_SSL_VERIFYHOST và CURLOPT_SSL_VERIFYPEER thành false. Điều này giúp tránh việc kiểm tra xác thực certificate SSL.

Xử lý file nhận từ client

File: upload.php

Ở đây mình chỉ hiển thị dữ liệu gửi lên từ client, còn các bạn có thể tùy ý xử lý dữ liệu.

<?php
// Show request data
var_dump($_FILES);
var_dump($_POST);

Kết quả:

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *