在PHP中使用curl上傳文件時,可以通過設置CURLOPT_NOPROGRESS選項為false來啟用進度回調函數。然后通過設置CURLOPT_PROGRESSFUNCTION選項來指定一個回調函數來監控上傳進度。
以下是一個示例代碼:
$file_path = 'path/to/file.jpg';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://example.com/upload.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
'file' => new CURLFile($file_path)
));
// 設置進度回調函數
curl_setopt($ch, CURLOPT_NOPROGRESS, false);
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, function($resource, $download_size, $downloaded, $upload_size, $uploaded) {
if ($upload_size > 0) {
$progress = ($uploaded / $upload_size) * 100;
echo "Upload progress: " . $progress . "%\n";
}
return 0;
});
$response = curl_exec($ch);
curl_close($ch);
在上面的示例中,當上傳文件時,進度回調函數會輸出上傳進度的百分比。您可以根據實際需求修改回調函數的內容來監控上傳進度。