رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل در ارسال عکس به تلگرام
#1
سلام دوستان
امیدوارم کسی تجربه کار با ربات تلگرام داشته باشه یا حداقل اینکه بدونه مشکل کجاست تا مشکل حل بشه ...

من برای ارسال متن مشکلی ندارم اما برای ارسال عکس نمی دونم مشکل چیه , خطایه زیر رو میده :
{"ok":false,"error_code":400,"description":"[Error]: Bad Request: Wrong persistent file_id specified: contains wrong characters or have wrong length"}

البته اگه فرم درست کنم و از اون طریق اقدام به ارسال عکس کنم عکس رو تو تلگرام نشون میده اما نمی خوام به این شکل باشه بلکه می خوام از خود سرورم بتونم عکس رو به تلگرام ارسال کنم ...

کدی که بهش رسیدم این بود :
 $botTocken = "111111111111111111";
$website = "https://api.telegram.org/bot" . $botTocken;

$update = file_get_contents($website . "/getupdates");
$updateArray = json_decode($update, TRUE);
$chat_id = $updateArray["result"][0]["message"]["chat"]["id"];

$url = $website . "/sendPhoto?chat_id=" . $chat_id;
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"Content-Type:multipart/form-data"
));
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
"photo"     => "t.jpg", 
)); 
curl_setopt($ch, CURLOPT_INFILESIZE, filesize("t.jpg"));
$output = curl_exec($ch);

print $output;
پاسخ
تشکر شده توسط:
#2
سلام دوستان
متاسفانه مشکلم هنوز حل نشده

من الان برای ارسال فایل عکس بین دو تا سرور مشکل دارم , گشتم تو نت یه نمونه کد پیدا کردم مقادیر پستش ارسال میشه ولی مقادیر فایل خالیه . لطفا راهنمایی کنید چی کار کنم تا بتونم یک فایل عکس رو سمت دیگه سرور ببینم

نقل قول:
Here is a simple script to send a file with php/cURL via POST:


 $target_url = 'http://www.mysite.ir/test.php';
       //This needs to be the full path to the file you want to send.
$file_name_with_full_path = realpath('./t.jpeg');
       /* curl will accept an array here too.
        * Many examples I found showed a url-encoded string instead.
        * Take note that the 'key' in the array will be the key that shows up in the
        * $_FILES array of the accept script. and the at sign '@' is required before the
        * file name.
        */
$post = array('extra_info' => '123456','file_contents'=>'@'.$file_name_with_full_path);

   $ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec ($ch);
curl_close ($ch);
echo $result;




نقل قول:
And here is the corresponding script to accept the file.

$uploaddir = realpath('./') . '/';
$uploadfile = $uploaddir . basename($_FILES['file_contents']['name']);
echo '<pre>';
	if (move_uploaded_file($_FILES['file_contents']['tmp_name'], $uploadfile)) {
	    echo "File is valid, and was successfully uploaded.\n";
	} else {
	    echo "Possible file upload attack!\n";
	}
	echo 'Here is some more debugging info:';
	print_r($_FILES);
	echo "\n<hr />\n";
	print_r($_POST);
print "</pr" . "e>\n";
 


خروجیش رو اگه نگاه کنید مقادیر پست نمایش داده میشه ولی مقادیر فایل خالی هستش :
Possible file upload attack!
Here is some more debugging info:Array
(
)


Array
(
    [extra_info] => 123456
    [file_contents] => @
)
پاسخ
تشکر شده توسط:
#3
سلام منم اون کدها رو تست کرده بودم خطا میداد.
از این کد استفاده میکنم و مشکلی نداره:
$token = '';
$chat_id = ''; // dar in format: -1001028717286
$target_url = "https://api.telegram.org/bot$token/sendPhoto";

$image = realpath("./image.jpg");
$post = array(
    'chat_id' => $chat_id,
    'photo' => '@'.$image,
    'caption' => 'test',
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec ($ch);
curl_close ($ch);
پاسخ
تشکر شده توسط: mgbg
#4
آقا خیلی ممنون دستتم درد نکنه کدی که دادی اوکی بود ولی من هنوز متوجه نشدم مشکل کجا بود کدی که نوشتی با کدی که من بالا دادم به نظرم فرقی نداشت !!!!
بازم تشکر
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان