在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);
在上面的示例中,当上传文件时,进度回调函数会输出上传进度的百分比。您可以根据实际需求修改回调函数的内容来监控上传进度。