2015-11-05 1 views
0

Je suis en train de construire un bot de télégramme, mais le problème est lié à la modification des fonctions php en raison de PHP plus récent 5.6.envoyerPhoto pour télécharger Photo ne fonctionne pas

Voici le code de base que j'ai trouvé, accommodant les changements de php 5.6.

 #$filePhoto = curl_file_create($filepath, 'image/jpg', 'heInternet'); //**LINE 39** 
     $filePhoto = new CURLFile($filepath, 'image/jpg', 'heInternet'); //**LINE 40** 
     //$texto = $_POST['msg']; 
     $content = array(
      'chat_id' => "@BugTheInternet", 
      'photo' => $filePhoto 
    ); 

     //curl required to post 
     $ch = curl_init(); 

     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_POST, true); 
     curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); // required as of PHP 5.6.0 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $filePhoto); //**LINE 53** 
     curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data')); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //fix http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/ 

     // receive server response ... 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

     $server_output = curl_exec ($ch); 

Voici l'erreur que je reçois:

Obsolète: curl_setopt(): L'utilisation de l'API @filename pour le fichier L'ajout est dépréciée. S'il vous plaît utiliser la classe CURLFile place dans C: \ xampp quelque part \ somefile.php en ligne 53

Quand je change le contenu de $ à filePhoto $ en ligne 53. Il court et le serveur envoie des télégrammes un message JSON. serveur Répondre:

"{"ok":false,"error_code":400,"description":"Error: Bad Request: there is no photo in request"}" 

J'ai Internet cherché pendant des heures, de trouver des solutions. BTW, deux façons suggérées pour PHP 5.6 que j'utilise, il est dans la ligne 39, 40.

S'il vous plaît aidez-moi si vous avez trouvé ceci ou autrement. merci.

+0

Qu'est-ce que c'est avec "images of" code récemment ?? –

+0

Devrais-je l'enlever? –

+0

vous devez inclure votre code au format texte, si les visiteurs de la question doivent corriger quelque chose, plutôt que de tout retaper. –

Répondre

0

Avez-vous essayé de le lui envoyer hardcore manière comme ceci?

$ch = curl_init("https://api.telegram.org/bot<token>/sendPhoto&chat_id=<chatID>&photo=<path/to/your/image>"); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); 
curl_exec($ch); 
curl_close ($ch); 

Tout d'abord j'ai utilisé POSTFIELDS et d'autres correcte trucs pour cURL aussi bien quand l'envoi de messages, mais il ne fonctionnerait pas pour moi. Donc je hardcored comme exemple ci-dessus et cela a juste fonctionné.

0

vous devez supprimer

'chat_id' => "@BugTheInternet", 

de contenu $ et ajouter chat_id à friser url parce

bibliothèque cURL de PHP meurt retourner le message d'erreur "Echec création données formpost" lorsque vous essayez d'utiliser un tableau contenant une valeur commençant par '@'. Si le tableau est remplacé par une chaîne au format codé par URL, le problème ne se produit pas. refrence: https://bugs.php.net/bug.php?id=50060

+0

Et comment suggérez-vous que je fasse ça? En faisant une variable Array? –