PHP复用CURL简单文件上传的2种方法

发布时间 2023-12-14 18:29:27作者: sblack

方法一: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);

 

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