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);

 

至于大文件的分片上传持续研究中,有结果再更新。

posted @ 2023-12-14 18:27  sblack  阅读(213)  评论(0编辑  收藏  举报