2010-12-10 6 views
3

Picasa Web Uploader APIを使用して、ギャラリーを自分のウェブサイトにアップロードしようとしています。ボタンを実装してPicasaで設定して認証を取得することができましたが、Picasaから自分のサイトで受け取ったPOSTを処理する場合、$_FILESの配列は常に空です。PHPリクエストで長いヘッダー宣言を処理するにはどうすればよいですか?

私はバイオリンを使用してPicasaので掲示リクエストを見て持っていたし、各ファイルのマルチパートの開始時Content-Dispositionヘッダがtoo longであることを識別することができた - Picasaではによりを通じて送られたヘッダはフルパスを含み

Content-Disposition: form-data; name="http://localhost:50216/1f6b3b29edc6f9d8898ede07c1b10e27/image/415603f72f75af1a.jpg?size=640"; filename="DSC_0055.JPG" 

PHPはヘッダのみ場合、全体のマルチパートセクションが破棄される128文字まで、そのヘッダを扱うことができるようです。私のサーバー上のファイルには、それははるかに超える128個の文字をされて終わります長すぎます。 (私がFiddlerでこのヘッダの長さを短くしてリクエストを再投稿すると、私のウェブサイトは$_FILEを受け取り、それをうまく処理します)。

どうすればこの問題を回避できますか?

  • PHPが長いヘッダーを処理し、$ _FILE配列のデータを受け取れるように設定を設定することはできますか?
  • 、または$ _FILE配列の他に、何らかの方法で不足しているマルチパートセクションにアクセスできますか?
+0

それが良いか悪いのかはわかりませんが、なぜtinyurlのようなものを使ってそれらのURLを短縮してみませんか? – yoda

+0

私はそれがヘッダー@yodaのURLの長さを減らすのが最善であることに同意しますが、残念ながら私はPicasaで生成されたPOST要求を制御できません。 – Dexter

答えて

3

あなたはうんざりです。

しかし、とにかくそれを達成するためにいくつかの回避策を使用することができます。受け取ったフォームデータを自分で解析する必要があります。もう一つの問題は、あなたが必要なので、PHPを使用して、生のmutlipart /フォームデータを見てみましょうではないということです。

file_get_contents("php://stdin")
  • ブレークアップ/フォームデータをから読み取る

    代わりに、PHPインタープリタをパッチすることもできます。 :/まあ

  • 1

    あなたが本当に生の着信HTTPボディにアクセスする必要がある場合は、PECLモジュールがインストールされている場合、私は信じているストリームラッパーが存在しない場合、あなたは、http_get_request_body()を使用することができます。ファー

    $httpBody = @file_get_contents('php://input'); 
    

    理想からは、私は気づいていなかった$_FILESは、この問題は、何かを見ていた。

    関連する問題