2010-12-07 19 views
0

でraw multipartデータを送信するPHPのPOSTがHTMLフォームなしのraw multipartデータを送信する必要があります...代わりにjquery $ .post()を使用してプロセスを開始します(目的ツイッターアカウントの背景を変更することです)。

どうすれば実現できますか?これは私の現在(まだ不完全)コードです:

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

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

2)送信ボタンをクリックすると、JavaScript関数がトリガます。.. 。それが呼び出されます:は

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

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

3)helper.php

ノート

  1. すべてのバックグラウンドファイルは/www /のアップロードローカルディレクトリの中にあります。アブラハム・ウィリアムズ使用
  2. IM($接続オブジェクトに生マルチパートデータに[画像 '] twitteroauthライブラリ0.2

ボトムラインは、手順3で私が$のPARAMを送信する必要が' twitterライブラリ)。

アイデア?

いくつかの参照:うん、私は今見http://dev.twitter.com/doc/post/account/update_profile_background_image

+0

'file_get_contents()'は機能しますか? – alex

+0

いいえ、それはありません:( – andufo

+0

cURLで解決しました – andufo

答えて

1

その手動でコンテンツタイプを設定する必要がとimage分野で@キーが文句を言わないその魔法を行うことを意味し、クエリ文字列にポストフィールドの配列を構築するHESそれは配列の引数でのみ動作するからです。もっと重要なのは、ライブラリをハックしたり、拡張したり、特定の機能を置き換えたりせずにヘッダを修正する方法がないことです。


私のようなimageのparamのファイルパスへ@を付加されますしようとするだろう:cURLのでそれを行うための便利な方法である、とlibrayは基本的に使用するように見える

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

要求を行うためにcURLを実行する必要があります。

+0

まだ試してもうまくいかない:s – andufo

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); 
     }