PHPでPOSTリクエスト本文のサイズを取得する方法はありますか?
単純な:
$size = (int) $_SERVER['CONTENT_LENGTH'];
$_SERVER['CONTENT_LENGTH']
は、HTTPリクエストメソッドがPOST(GETではない)の場合にのみ設定されることに注意してください。これは、-で指定されているContent-Length
ヘッダーの生の値です。 RFC 72 。
ファイルのアップロードの場合、アップロードされたファイルの合計サイズを取得する場合は、$_FILE
配列を繰り返し処理して合計する必要があります。各$file['size']
。 POSTデータのエンコードオーバーヘッドのため、正確な合計サイズが生のContent-Length
値と一致しない場合があります(また、$file['error']
を使用してアップロードエラーを確認する必要があることに注意してください)。部分的なアップロードの場合は$_FILES
、空のアップロードの場合はUPLOAD_ERR_PARTIAL
など、各UPLOAD_ERR_NO_FILE
要素のコード。 ファイルアップロードエラー PHP手動。)
私の推測では、それは$_SERVER['CONTENT_LENGTH']
にあります。
エラー検出のためにそれが必要な場合は、$_FILES['filename']['error']
を覗いてみてください。
ファイルのアップロードが失敗したかどうかを判断しようとしている場合は、以下のリンクに示すようにPHPファイルエラー処理を使用する必要があります。これは、ファイルを検出するための最も信頼できる方法ですアップロードエラー:
http://us3.php.net/manual/en/features.file-upload.errors.php
ファイルのアップロードなしでPOSTリクエスト)のサイズが必要な場合、何かでそうすることができるはずですこのような:
$request = http_build_query($_POST);
$size = strlen($request);
これはうまくいくかもしれません:
$bytesInPostRequestBody = strlen(file_get_contents('php://input'));
// This does not count the bytes of the request's headers on its body.
私はあなたが探していると思います $HTTP_RAW_POST_DATA