2015-07-21 77 views
1


这头将通过我的节目一个地址:,卷曲PHP上传文件通过自定义标题

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

我想下面的代码POST 2个可变因素(chat_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错误..

回答

0

这就是完全不必要的。你做得太多了,CURL可以做得更好(并且恰当)。

$post = array(
    'chat_id' => 108432389, 
    'photo' => '@Untitled.jpg' 
); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 

old-school php curl在值字段中使用@来表示要上传的文件。较新版本改用curlfile

+0

谢谢,但它不能在电报API工作: '<?PHP的 $交=阵列( 'chat_id'=> 108432389, '照片'=>真实路径( 'ur.png') ); $ url ='https://api.telegram.org/(MyToken)/SendPhoto'; $ ch = curl_init($ url); $ headers = array(“Content-Type:multipart/form-data”); curl_setopt($ ch,CURLOPT_POST,1); curl_setopt($ ch,CURLOPT_POSTFIELDS,$ post); curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,false); curl_setopt($ ch,CURLOPT_HTTPHEADER,$ headers); $ reply = curl_exec($ ch); ?> –