PHPでPOSTリクエストボディのサイズを取得する方法はありますか?PHPでPOSTリクエストのサイズを取得
答えて
私の推測は、それは$_SERVER['CONTENT_LENGTH']
です。
エラー検出に必要な場合は、$_FILES['filename']['error']
を参照してください。
私は、ファイルのアップロードが失敗したかどうかを把握しようとしている場合は、$HTTP_RAW_POST_DATA
うーん...しかし、あなたはそのサイズを知るためにデータを必要としませんか? –
ありがとうございますが、$ HTTP_RAW_POST_DATAはenctype = "multipart/form-data"では使用できません。私はファイルを送るためにmultipart/form-dataを使う必要があります。 –
**警告**この機能はPHP 5.6.0では廃止され、PHP 7.0.0では削除されました。そうでない場合は、サイズが必要な場合は、$ _FILES配列を使用してファイルを取得することができます。=> [PHP Link](http://php.net/manual/en/reserved.variables.httprawpostdata.php) –
を探していると思い、あなたは下のリンクで示すように扱うPHPファイルのエラーを使用する必要があります。これは、ファイルアップロードのエラーを検出するための最も信頼性の高い方法である:
http://us3.php.net/manual/en/features.file-upload.errors.php
あなたが任意のファイルのアップロードなしのPOSTリクエストの大きさが必要な場合は、あなたがこのようなもので、そうすることができる必要があります:
$request = http_build_query($_POST);
$size = strlen($request);
$ _FILES ['nameoffile'] ['size'] – Jakub
これはうまくいくかもしれない:
$bytesInPostRequestBody = strlen(file_get_contents('php://input'));
// This does not count the bytes of the request's headers on its body.
PHP5.6より前のバージョンでは、このアクションは一度だけ読むことが許可されているため、ストリームを消去する可能性があります:[docs](http://php.net/manual/en/wrappers .php.php)。だから、それは長さだが、それは空になるだろう。 – vladkras
として、単純なよう:
$size = (int) $_SERVER['CONTENT_LENGTH'];
$ _SERVER ['CONTENT_LENGTH']は、HTTPリクエストではPOSTメソッドを介してのみ設定されます。これは、Content-Lengthヘッダーの生の値です。参照:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
をファイルのアップロードの場合は、あなたがアップロードされたファイルの合計サイズを取得したい場合は、それぞれ$ファイル[「サイズ」]を合計する$ _fileの要素を反復処理する必要があります。正確な合計サイズは、POSTデータのエンコーディングオーバーヘッドのため、生のContent-Length値とは一致しません。
ファイルエラーについては、各$ _FILES要素の$ file ['error']コードを確認する必要があります。たとえば、部分アップロードではエラーUPLOAD_ERR_PARTIALが返され、空のアップロードではUPLOAD_ERR_NO_FILEが返されます。 PHPマニュアルのファイルアップロードエラーのドキュメントを参照してください。
- 1. ファイルのサイズを取得し、アップロードしてPOSTリクエストします。
- 2. POSTリクエストを取得Symfony 3
- 3. PHPでPOSTリクエスト後にHTTPレスポンスヘッダを取得するには?
- 4. iPhone - PHP POSTリクエスト
- 5. ajaxリクエストとそのPOSTデータの取得
- 6. POSTリクエストからレスポンスを取得
- 7. POSTリクエストからデータを取得
- 8. Java:Multipart POSTリクエストからビデオファイルを取得
- 9. django modelformset_factory POSTリクエストのデータ取得
- 10. リクエストのサイズを取得する
- 11. eBay PHP HTTP POSTリクエスト?
- 12. PHP "duzun/hQuery.php" POSTリクエスト
- 13. $ .post()htmlのPHPのURLを取得
- 14. POSTリクエストでCookieを他のサイト、PHP
- 15. Port Vimeo PHP POSTリクエストをアップロード
- 16. PHPのcURL POSTリクエストと通常のPOSTリクエストの区別
- 17. JavaのBrowserMobでPOSTリクエスト/応答のみを取得
- 18. PHP SOAP POSTリクエストにC#SOAP POSTリクエストを翻訳
- 19. PHPでのJSON POSTリクエストの解析
- 20. PHPでのJSON POSTリクエストの処理
- 21. POSTリクエストでjson属性を取得できません
- 22. POSTリクエストからGuzzle php
- 23. Guzzle POSTリクエストphp対Ajax
- 24. HttpリクエストとPHP POST/GET VB.Net
- 25. Linux cURL対PHP cURL - POSTリクエスト
- 26. PHP JSON POSTデータを取得する
- 27. RubyからPHPへのリクエストを取得
- 28. PHPがJavaからのPOSTリクエストを受け取りました
- 29. Beanshell PreprocessorでHTTP POSTリクエスト本文を取得するには?
- 30. ReactでPOSTリクエスト値を取得する方法
他のフィールドと一緒に大きなファイルをサーバーにアップロードしています。しかし、それを中止すればリクエストの一部が失われるので、リクエストボディの実際のサイズとContent-Lengthヘッダーの値を比較して、ファイルのアップロードが中止されていないことを確認する必要があります。 –
'$ _SERVER ['CONTENT_LENGTH']'はもちろんヘッダーからの値を含んでいます。私はそれが受信されている実際のデータに準拠していることをPHPが確認する責任があると思います。たぶん '$ _FILES ['file'] ['error']'にはいくつかのヒントがありますか? –
失敗したファイルのアップロードを検出しようとしている場合は、投稿を数えずに表示されるようにしてください。 –