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