0

生のマルチパートデータをphpPOSTで送信する必要がありますが、htmlフォームは使用しません...代わりにjquery $ .post()でプロセスを開始します(目的はTwitterアカウントの背景を変更することです)。

どうすればそれを達成できますか?これは私の現在の(そしてまだ不完全な)コードです:

1)画像ファイル名がこの非表示の入力フィールドに挿入されます:

<input type="hidden" id="profile_background_image_url" value="oats.jpg" />

2)送信ボタンをクリックすると、javascript関数がトリガーされます...そしてそれは以下を呼び出します:

$.post('helper.php',{
 profile_background_image_url:$('#profile_background_image_url').val()
});

3)helper.phpには

$param = array();
$param['image'] = '/www/uploads/'.$_POST['profile_use_background_image'];
$status = $connection->post('account/update_profile_background_image',$param);

  1. すべてのバックグラウンドファイルは/www/uploadsローカルディレクトリ内にあります。
  2. エイブラハムウィリアムズのtwitteroauthライブラリ0.2を使用しているim

結論として、ステップ3では、生のマルチパートデータの$ param['image']$connectionオブジェクト(twitterライブラリ)に送信する必要があります。

何か案は?

いくつかの参照:http ://dev.twitter.com/doc/post/account/update_profile_background_image

4

2 に答える 2

1

ええ、私は今、彼が投稿フィールド配列をクエリ文字列に構築していることを確認しました。これは、コンテンツタイプを手動で設定する必要があり@、フィールドのキーはimage配列引数でのみ機能するため、魔法をかけないことを意味します。さらに重要なことに、ライブラリをハッキングしたり、ライブラリを拡張したり、特定の関数を置き換えたりせずに、ヘッダーを変更する方法がわかりません。


次のように、パラメータ@のファイルパスの前に追加してみます。image

$param['image'] = '@/www/uploads/'.$_POST['profile_use_background_image'];

これはcURLでそれを行うための便利な方法であり、librayは基本的にcURLを使用してリクエストを行うように見えるので、それは機能するはずです。

于 2010-12-07T02:47:04.010 に答える
0

解決しました!

curl_setopt($ci, CURLOPT_POST, TRUE);
        if(is_array($files)){
          $post_file_array = array();
          foreach($files as $key=>$value){
             $post_file_array[$key] = "@{$value}";
          }
          curl_setopt($ci, CURLOPT_POSTFIELDS, $post_file_array);
          if (!empty($postfields)) {
            $url = "{$url}?{$postfields}";
          }
        }
        else if (!empty($postfields)) {
          curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);
        }
于 2010-12-07T20:51:32.597 に答える