2009-09-01 39 views

答えて

4

私の推測は、それは$_SERVER['CONTENT_LENGTH']です。

エラー検出に必要な場合は、$_FILES['filename']['error']を参照してください。

+0

他のフィールドと一緒に大きなファイルをサーバーにアップロードしています。しかし、それを中止すればリクエストの一部が失われるので、リクエストボディの実際のサイズとContent-Lengthヘッダーの値を比較して、ファイルのアップロードが中止されていないことを確認する必要があります。 –

+0

'$ _SERVER ['CONTENT_LENGTH']'はもちろんヘッダーからの値を含んでいます。私はそれが受信されている実際のデータに準拠していることをPHPが確認する責任があると思います。たぶん '$ _FILES ['file'] ['error']'にはいくつかのヒントがありますか? –

+0

失敗したファイルのアップロードを検出しようとしている場合は、投稿を数えずに表示されるようにしてください。 –

0

私は、ファイルのアップロードが失敗したかどうかを把握しようとしている場合は、$HTTP_RAW_POST_DATA

+0

うーん...しかし、あなたはそのサイズを知るためにデータを必要としませんか? –

+0

ありがとうございますが、$ HTTP_RAW_POST_DATAはenctype = "multipart/form-data"では使用できません。私はファイルを送るためにmultipart/form-dataを使う必要があります。 –

+0

**警告**この機能はPHP 5.6.0では廃止され、PHP 7.0.0では削除されました。そうでない場合は、サイズが必要な場合は、$ _FILES配列を使用してファイルを取得することができます。=> [PHP Link](http://php.net/manual/en/reserved.variables.httprawpostdata.php) –

4

を探していると思い、あなたは下のリンクで示すように扱うPHPファイルのエラーを使用する必要があります。これは、ファイルアップロードのエラーを検出するための最も信頼性の高い方法である:
http://us3.php.net/manual/en/features.file-upload.errors.php

あなたが任意のファイルのアップロードなしのPOSTリクエストの大きさが必要な場合は、あなたがこのようなもので、そうすることができる必要があります:

$request = http_build_query($_POST); 
$size = strlen($request); 
+0

$ _FILES ['nameoffile'] ['size'] – Jakub

2

これはうまくいくかもしれない:

$bytesInPostRequestBody = strlen(file_get_contents('php://input')); 
// This does not count the bytes of the request's headers on its body. 
+0

PHP5.6より前のバージョンでは、このアクションは一度だけ読むことが許可されているため、ストリームを消去する可能性があります:[docs](http://php.net/manual/en/wrappers .php.php)。だから、それは長さだが、それは空になるだろう。 – vladkras

30

として、単純なよう:

$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

$ size =(int)$ _SERVER ['CONTENT_LENGTH'];それはバイト単位のサイズですか? – anujeet

+0

廃止予定... $ _SERVER ['argv'] – ina

関連する問題