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. PHPでPOSTリクエスト後にHTTPレスポンスヘッダを取得するには?
- 2. iPhone - PHP POSTリクエスト
- 3. Java:Multipart POSTリクエストからビデオファイルを取得
- 4. POSTリクエストからデータを取得
- 5. eBay PHP HTTP POSTリクエスト?
- 6. Port Vimeo PHP POSTリクエストをアップロード
- 7. PHPでのJSON POSTリクエストの解析
- 8. PHPでのJSON POSTリクエストの処理
- 9. PHPがJavaからのPOSTリクエストを受け取りました
- 10. Restkit send Postの代わりにリクエストを取得する
- 11. POSTリクエストからパラメータの名前を取得する方法は?
- 12. Php、ajaxリクエストからRefererを取得
- 13. XMLを含むHTTP POSTリクエストを取得する
- 14. POSTリクエストを使用してコレクションを取得しますか?
- 15. PHP:画像サイズを取得する
- 16. POSTリクエストからレスポンスオブジェクトを取得する方法は?
- 17. PyramidでPOSTリクエストを最大サイズに制限
- 18. DjangoでPOST値を取得
- 19. Flex RemoteObjectはリクエスト/応答のサイズを取得します
- 20. GWTでのPOSTリクエスト
- 21. POSTリクエストでGETリクエストとPOSTリクエストの両方のパラメータを取得するにはどうすればよいですか?
- 22. PHP:受け取ったリクエストの本体を取得する
- 23. PHP-cURL POSTリクエストによるxmlリクエストの方法
- 24. PHPで一意のワーカー/スレッド/プロセス/リクエストIDを取得
- 25. PHPのオブジェクトを介して送信ボタンからPOSTを取得
- 26. GatlingのPOSTリクエスト
- 27. PHPでブラウザウィンドウのサイズ/解像度を取得する
- 28. getInputStream()POSTリクエストでハング
- 29. OkHttpでキャッシュPOSTリクエスト
- 30. PHPのヘッダ情報を取得するcurl post request
他のフィールドと一緒に大きなファイルをサーバーにアップロードしています。しかし、それを中止すればリクエストの一部が失われるので、リクエストボディの実際のサイズとContent-Lengthヘッダーの値を比較して、ファイルのアップロードが中止されていないことを確認する必要があります。 –
'$ _SERVER ['CONTENT_LENGTH']'はもちろんヘッダーからの値を含んでいます。私はそれが受信されている実際のデータに準拠していることをPHPが確認する責任があると思います。たぶん '$ _FILES ['file'] ['error']'にはいくつかのヒントがありますか? –
失敗したファイルのアップロードを検出しようとしている場合は、投稿を数えずに表示されるようにしてください。 –