Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
电报机器人发送文档(托管服务器上的php)_Php_Curl_Post_File Upload_Telegram Bot - Fatal编程技术网

电报机器人发送文档(托管服务器上的php)

电报机器人发送文档(托管服务器上的php),php,curl,post,file-upload,telegram-bot,Php,Curl,Post,File Upload,Telegram Bot,我在第三方托管服务器上设置了一个带有webhook的电报机器人。 我可以用任何一种,而且效果很好 现在我正试着做我的机器人。如果我理解正确,我需要使用multipart/formdata发出POST请求,并且我正在努力使它在宿主服务器上工作 $url = "https://api.telegram.org/bot<myToken>/sendDocument?chat_id=$<myId>"; $ch = curl_init(); curl_setop

我在第三方托管服务器上设置了一个带有webhook的电报机器人。 我可以用任何一种,而且效果很好

现在我正试着做我的机器人。如果我理解正确,我需要使用
multipart/formdata
发出POST请求,并且我正在努力使它在宿主服务器上工作

$url = "https://api.telegram.org/bot<myToken>/sendDocument?chat_id=$<myId>";
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
$post = array( 'document' => '@'.realpath('data.txt'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

$headers = array();
$headers[] = 'Content-Type: multipart/form-data';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

//DEBUGGING-------------------------------
$info = curl_getinfo($ch);
$buffer = "";
foreach ($info as $key => $value) {
    $buffer .= "$key => $value\n";
}
sendMessage($buffer, $<myId>);
//----------------------------------------

$result = curl_exec($ch);

//DEBUGGING-------------------------------
sendMessage($result, $<myId>);
//----------------------------------------

curl_close($ch);
我也试着做一个。。。这似乎比他需要的要难,因为我可以很容易地做到。

  • 无需设置内容标题
,创建一个,并将其添加到CURL请求中


不要尝试自己设置
内容类型
标题,让cURL来处理。(它还需要包含用于分隔多部分请求部分的边界值,但您试图指定的值中当然缺少该边界值。)@CBroe Right!我已经删除了这3行,但没有什么改变很多!!当我尝试使用
new CURLFile()
时,我非常接近,但我在
CURLOPT\u POSTFIELDS
数组中插入了
chat\u id
。。。还有一件事,
是否需要“文件名”
?没有它也能用很高兴它能用,不需要文件名!我已经从请求中删除了它!如果我想在上传后删除文件,那么在
curl\u close()
之后删除是否安全,或者我是否应该等待上传完成的消息?不太确定,我不会冒险在上传后删除文件。如果你真的很好奇,你可以用一个新问题问这个问题。
url => https://api.telegram.org/bot<myToken>/sendDocument?chat_id=$<myId>
content_type => 
http_code => 0
header_size => 0
request_size => 0
filetime => 0
ssl_verify_result => 0
redirect_count => 0
total_time => 0
namelookup_time => 0
connect_time => 0
pretransfer_time => 0
size_upload => 0
size_download => 0
speed_download => 0
speed_upload => 0
download_content_length => -1
upload_content_length => -1
starttransfer_time => 0
redirect_time => 0
redirect_url =>
----------------------------------------------------------------------------
{"ok":false,"error_code":400,"description":"Bad Request: URL host is empty"}