通过自定义头使用curl php上传文件

通过自定义头使用curl php上传文件,php,curl,Php,Curl,此标题由我的程序发送到以下地址: --55ae49448a20c Content-Disposition: form-data; name="chat_id" Content-Length: 9 108432389 --55ae49448a20c Content-Disposition: form-data; name="photo"; filename="Untitled.png" Content-Length: 16252 Content-Type: image/png PNG 我想


此标题由我的程序发送到以下地址:

--55ae49448a20c
Content-Disposition: form-data; name="chat_id"
Content-Length: 9

108432389
--55ae49448a20c
Content-Disposition: form-data; name="photo"; filename="Untitled.png"
Content-Length: 16252
Content-Type: image/png

 PNG
我想通过以下代码发布2个变量(聊天id)和(照片)。
尝试的代码:

    <?php
$params  = "Content-Disposition: form-data; name=\"chat_id\"\r\n"
    . "Content-Length: 9\r\n\r\n"
    . "\r\n"
    . "Content-Disposition: form-data; name=\"photo\"; filename=\"Untitled.png\"\r\n"
    . "Content-Length: ".filesize("Untitled.png")."\r\n"
    . "Content-Type: image/png\r\n\r\n"
    . file_get_contents("Untitled.png");
$request_headers    = array();
$request_headers[]  = 'Content-Length: ' . strlen($params);
$url     = 'http://example.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8888');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);
$reply = curl_exec($ch);
?>

还有别的方法吗

我尝试的代码给了我400个坏的Gatway错误。

这完全是不必要的。你做的太多了,旋度本身可以做得更好(而且正确)


旧式php curl在值字段中使用
@
表示要上载的文件。较新的版本则改用。

这完全是不必要的。你做的太多了,旋度本身可以做得更好(而且正确)


旧式php curl在值字段中使用
@
表示要上载的文件。较新的版本则改用。

谢谢,但它在电报api中不起作用:
谢谢,但在电报api中不起作用:
$post = array(
    'chat_id' => 108432389,
    'photo' => '@Untitled.jpg'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);