Heim > Backend-Entwicklung > PHP-Tutorial > Curl konnte das Bild nicht zur API hochladen

Curl konnte das Bild nicht zur API hochladen

WBOY
Freigeben: 2016-08-18 09:16:35
Original
1065 Leute haben es durchsucht

<code>   <?php
   function upload_file($url,$filename,$path,$type){
        $data = array(
            'access_token' => '**************',
            'status' => 'img',
            'visible'=>1,
            'pic'=>'@'.realpath($path).";type=".$type.";filename=".$filename
        );
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, true );
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $return_data = curl_exec($ch);
        curl_close($ch);
        $decode = json_decode($return_data);
        echo $decode->original_pic;       
   }

    if ($_POST) {
        $url = 'https://upload.api.weibo.com/2/statuses/upload.json';
        $path = $_SERVER['DOCUMENT_ROOT'];
        $tmpname = $_FILES['fname']['name'];
        $tmpfile = $_FILES['fname']['tmp_name'];
        $tmpType = $_FILES['fname']['type'];
        upload_file($url,$tmpname,$tmpfile,$tmpType);
        exit;
    }
    echo '<form action="" enctype="multipart/form-data"  method="post">
    <input type="file" name="fname" /》
    <input type="submit" value="Submit" />
    </form>';
?>
</code>
Nach dem Login kopieren
Nach dem Login kopieren

Es gibt keine Fehlermeldung auf der Seite und wenn ich die API von Weibo öffne, wird ein 405-Fehler angezeigt. Ich weiß nicht, ob es an der API selbst liegt.

Antwortinhalt:

<code>   <?php
   function upload_file($url,$filename,$path,$type){
        $data = array(
            'access_token' => '**************',
            'status' => 'img',
            'visible'=>1,
            'pic'=>'@'.realpath($path).";type=".$type.";filename=".$filename
        );
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, true );
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $return_data = curl_exec($ch);
        curl_close($ch);
        $decode = json_decode($return_data);
        echo $decode->original_pic;       
   }

    if ($_POST) {
        $url = 'https://upload.api.weibo.com/2/statuses/upload.json';
        $path = $_SERVER['DOCUMENT_ROOT'];
        $tmpname = $_FILES['fname']['name'];
        $tmpfile = $_FILES['fname']['tmp_name'];
        $tmpType = $_FILES['fname']['type'];
        upload_file($url,$tmpname,$tmpfile,$tmpType);
        exit;
    }
    echo '<form action="" enctype="multipart/form-data"  method="post">
    <input type="file" name="fname" /》
    <input type="submit" value="Submit" />
    </form>';
?>
</code>
Nach dem Login kopieren
Nach dem Login kopieren

Es gibt keine Fehlermeldung auf der Seite und wenn ich die API von Weibo öffne, wird ein 405-Fehler angezeigt. Ich weiß nicht, ob es an der API selbst liegt.

Wenn die PHP-Version 5.5 oder höher ist
Sie können den @-Dateipfad nicht verwenden, wenn Sie Dateien mit Curl hochladen.
Sie müssen stattdessen CURLFile verwenden, auch curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); ist nutzlos

Richten Sie das Protokoll ein und probieren Sie es aus! header("Content-Type:multipart/form-data")

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage