PHP cURL 不支持一次上傳多個文件,但您可以通過循環遍歷數組中的所有文件并使用 curl_multi_*
函數來實現這個功能。以下是一個示例:
<?php
// 要上傳的文件列表
$file_list = ['file1.jpg', 'file2.jpg', 'file3.jpg'];
// 初始化 cURL Multi 資源
$mh = curl_multi_init();
// 初始化 cURL 句柄資源數組
$curl_handles = [];
// 循環遍歷文件列表并為每個文件創建一個 cURL 句柄
foreach ($file_list as $i => $file) {
// 創建一個新的 cURL 句柄
$curl_handle = curl_init();
// 設置 cURL 選項
curl_setopt($curl_handle, CURLOPT_URL, 'https://example.com/upload');
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, ['file' => new CURLFile($file, 'image/jpeg', $file)]);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
// 將 cURL 句柄添加到 cURL Multi 資源中
curl_multi_add_handle($mh, $curl_handle);
// 將 cURL 句柄資源存儲到數組中
$curl_handles[$i] = $curl_handle;
}
// 執行處理的請求
$active = null;
do {
curl_multi_exec($mh, $active);
} while ($active && curl_multi_select($mh) != -1);
// 獲取處理結果并關閉 cURL 句柄和 cURL Multi 資源
$results = [];
foreach ($curl_handles as $i => $curl_handle) {
$results[$i] = curl_multi_getcontent($curl_handle);
curl_multi_remove_handle($mh, $curl_handle);
curl_close($curl_handle);
}
curl_multi_close($mh);
// 輸出上傳結果
print_r($results);
?>
這個示例中,我們首先創建了一個包含要上傳的文件名的數組。然后,我們遍歷這個數組并為每個文件創建一個 cURL 句柄。在循環內部,我們使用 CURLFile
類創建一個新的 cURL 文件對象,并將其添加到 POST 字節流中。最后,我們使用 curl_multi_*
函數執行請求并獲取處理結果。