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:
- 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).
- upload.php: Đây là tệp xử lý nhận tệp từ máy khách (phía máy chủ).
- 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ả: