2016-06-12 32 views
1

私はカールを使用して1つのソーシャルネットワークのサーバーに画像を送信します。次のコードは、画像へのリンクを$ post_params変数に入れるとうまくいきます。私はbase64のコード化されたイメージで同じことをやろうとし、$ post_params変数にbase64コードを挿入しますが、コードは動作しません。問題を修正してBase64イメージをアップロードするにはどうすればよいですか?curl(php)を使用してbase64画像をURLに送信

<?php 
 
    if (isset($_POST["upload_url"])) { 
 
     
 
     $upload_url = $_POST["upload_url"]; 
 
     
 
     $post_params['photo'] = '@' . 'image.jpg'; // link 
 
     
 
     $ch = curl_init(); 
 
     curl_setopt($ch, CURLOPT_URL, $upload_url); 
 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
 
     curl_setopt($ch, CURLOPT_POST, true); 
 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params); 
 
     $result = curl_exec($ch); 
 
     curl_close($ch); 
 
     
 
     echo $result; 
 
     
 
    } 
 
    ?>

+0

base64にエンコードする必要がある具体的な理由はありますか?あなたは単に画像を送ることができます。 [here](http://stackoverflow.com/questions/3433542/curl-php-send-image)を参照してください。 – Andrew

+0

@Andrew要点は、このイメージをキャンバスから生成した後、base64またはHTMLImageElement jsオブジェクトとしてのみ取得できることです –

答えて

0

私は、base64エンコードされた画像と同じことを行うと、$ post_params変数にbase64でコードを挿入しようとしたが、その後のコードは動作しません。

どのように機能しませんか? runscopeまたはrequestb.inのようなものを使用して、送信したリクエストがどのように表示されているか確認しましたか?説明的なエラーを出すために送信しているサービスですか?

問題を修正してBase64イメージをアップロードするにはどうすればよいですか?

送信しているファイル(image.jpg)は、通常のjpgファイルですか?それとも、ファイルのバージョンがbase64ですか?サービスでbase64が指定されている場合は、multipart/form-dataと符号化されたPOSTと、ファイルにはbase64がエンコードされていますか?それはあまり意味がない(私には少なくとも)。

私の推測では、画像はとなります。base64エンコードされた文字列です。そのためには、ファイルの内容を取り出してbase64_encode()まで実行し、それを文字列パラメータとして渡します。

関連する問題