php curl 传参文件

下面重点说一下 php curl 传参的文件的几种方法

先解释一下 aaa";filename="xxx
aaa 是对方要接收的参数
";filename=" 是固定格式
xxx 自己定义的名字,随意定义
要上传的文件资源在服务器本地
php 5.5之前
     'filename' => "@"."./hll.jpg", // 5.5之前 这个方法没有试过
    
 php 7.0
 $postBody   = [
		    'aaa' => curl_file_create("./hll.jpg",'image/jpeg',11),
		     'aaa";filename="xxx' => "./hll.jpg",
		    'aaa' => new \CURLFile("./hll.jpg","image/jpeg","filename"); // 使用CURLFile类
     ];
    
重点说一下 CURLFile 的参数也是可以使用通过 form表单提交的文件【$_FILES接收的参数】
	$fileinfo   = $_FILE['filename']; // 接收前端传过来的文件
	$postBody   = [
   			'aaa' => new \CURLFile($fileinfo['tmp_name'],$fileinfo['type'],$fileinfo['name']); // 使用CURLFile类
    ];
	
要上传的文件资源不在服务器本地
		$content    =  file_get_contents($url); // 获取远程的图片资源
        $postBody   = [
            'aaa";filename="xxx' => $content, // 远程文件的二进制
        ];
贴上代码
// 测试发送参数
public function test()
    {
        $url        = 'https://dss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2534506313,1688529724&fm=26&gp=0.jpg';
        $content    =  file_get_contents($url); // 获取远程的图片资源
        $requestUrl = 'xxx/accept';  // 请求的地址
        $fileinfo   = $_FILE['filename']; // 接收前端传过来的文件
        $postBody   = [
            'filename1";filename="filename1' => $content, // 远程文件的二进制
            'filename2' => "@"."./hll.jpg", // 5.5之前
            'filename3' => curl_file_create("./hll.jpg",'image/jpeg',11),// 5.5之后
            'filename4' => new \CURLFile($fileinfo['tmp_name'],$fileinfo['type'],$fileinfo['name']); // 使用CURLFile类 【参数是前端传输过来的】
            'filename5' => new \CURLFile("./hll.jpg",'image/jpeg',11); // 使用CURLFile类 【参数是本地文件】
            'filename6";filename="filename6' => "./hll.jpg", // 本地
            'uuid' => 111,
        ];
        $ch         = curl_init();
        curl_setopt($ch, CURLOPT_URL, $requestUrl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $postBody);
        $data = curl_exec($ch);
        $data = json_decode($data,1);
        curl_close($ch);
        return self::output(200, $data, '');
    }

// 接收参数
public function accept()
    {
        $data['file'] = $_FILES;
        $data['post'] = $_POST;
        echo json_encode($data,1);
    }

你可能感兴趣的:(php-小记,php,curl,传参文件)