3

Picasa Web Uploader APIを使用して、写真のギャラリーを自分の Web サイトにアップロードしようとしています。ボタンを実装し、Picasa でセットアップして認証を機能させることができましたが、Picasa からサイトが受信した POST を処理するとき、$_FILES配列は常に空です。

Fiddler を使用して Picasa から投稿されたリクエストを調べたところ、Content-Disposition各ファイル マルチパートの先頭にあるヘッダーが長すぎることがわかりました。Picasa から送信されたヘッダーには、私のファイルへのフル パスが含まれています。サーバーなので、最終的には 128 文字をはるかに超えます。

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

PHP は 128 文字までのヘッダーしか処理できないようで、ヘッダーが長すぎるとマルチパート セクション全体が破棄されるようです。(Fiddler でこのヘッダーの長さを短くしてリクエストを再投稿すると、私の Web サイトはそれを受け取り、$_FILE正常に処理します)。

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

  • PHP が長いヘッダーを処理し、$_FILE 配列でデータを受信できるように、構成設定をどこかに設定できますか?
  • または、$_FILE 配列以外に、欠落しているマルチパート セクションに別の方法でアクセスできますか?
4

2 に答える 2

3

あなたはめちゃくちゃです。

ただし、とにかくそれを達成するためにいくつかの回避策を使用できます。受信したフォーム データを自分で解析する必要があります。もう 1 つの問題は、PHP では生の multipart/form-data が表示されないため、次のものが必要になることです。

別の方法は、PHP インタープリターにパッチを適用することです。:/

于 2010-12-10T21:26:09.763 に答える
1

生の着信 HTTP 本文に本当にアクセスする必要がある場合は、PECL モジュールがインストールされている場合はhttp_get_request_body()を使用できます。インストールされていない場合は、ストリーム ラッパーがあると思います。

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

理想にはほど遠いですが、私は$_FILESこの問題に気をつけなければならないことに気づいていませんでした。

于 2010-12-10T21:26:13.817 に答える