PHP复用CURL简单文件上传的2种方法
方法一:curlFile 客户端
$filePath = 'head.txt';
// 创建 CURLFile 对象
$file = new CURLFile($filePath);
// 创建 cURL 资源 $ch = curl_init();
// 设置 cURL 选项
curl_setopt($ch, CURLOPT_URL, $your_upload_url);
// 替换为实际的上传接口URL curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
// 设置 POST 数据,包括上传的文件
curl_setopt($ch, CURLOPT_POSTFIELDS, ['file' => $file]);
// 执行 cURL 请求 $response = curl_exec($ch);
// 检查是否有错误发生
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch);
} else {
// 处理上传成功的响应
echo 'Upload successful. Response: ' . $response;
}
// 关闭 cURL 资源
curl_close($ch);
接收端:
move_uploaded_file($_FILES['file']['tmp_name'], $dest);
方法二: PUT方法 客户端:
$filePath = 'head.txt';
// 打开文件并获取文件句柄
$fileHandle = fopen($filePath, 'r');
// 创建 cURL 资源 $ch = curl_init();
// 设置 cURL 选项
curl_setopt($ch, CURLOPT_URL, "http://xxx/test/upload");
// 替换为实际的上传接口URL
curl_setopt($ch, CURLOPT_INFILE, $fileHandle);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($filePath));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PUT, 1);
// 执行 cURL 请求
$response = curl_exec($ch);
// 检查是否有错误发生
if (curl_errno($ch)) {
echo 'Curl error: ' . curl_error($ch); }
else {
// 处理上传成功的响应
echo 'Upload successful. Response: ' . $response;
}
//关闭文件句柄
fclose($fileHandle);
// 关闭 cURL 资源
curl_close($ch);
接收端:
$content = file_get_contents('php://input');
file_put_contents($filename,$content);
至于大文件的分片上传持续研究中,有结果再更新。