php模拟form表单发送文件
1、背景
今天遇到一个需求,要在php本身上面发送文件数据,文件是客户端表单提交过来的,然后我要发给另一方,另一方也是php写的,但是它接收的是表单数据的文件上传:
2、解决方案:
(1)header设置:需要支持form表单提交
$headers = [
'Content-Type:multipart/form-data',
];
(2)file文件设置:这里我直接使用客户端传给我的$_FILES变量,不做任何处理
$fileData = [
// 使用CURLFile类 【参数是前端传输过来的】;
'file' => new \CURLFile($_FILES["file"]['tmp_name'],$_FILES["file"]['type'],$_FILES["file"]['name']),
];
(3)发送数据
public function postDataFileByCurl($postUrl, $postData, $header = array('Content-Type: application/json;charset=utf-8'))
{
$timeout = 100;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $postUrl);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
//设置header头信息
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
ob_start();
$exe_result = curl_exec($ch);
ob_end_clean();
curl_close($ch);
$exe_result = json_decode($exe_result,true);
return $exe_result;
}
具体调用按照顺序发过去就行了,这很初级,大家应该都会