[英]Get size of POST-request in PHP
有沒有辦法在PHP中獲取POST請求主體的大小?
很簡單:
$size = (int) $_SERVER['CONTENT_LENGTH'];
請注意, $_SERVER['CONTENT_LENGTH']
僅在HTTP請求方法為POST(不是GET)時設置。 這是Content-Length
頭的原始值,如RFC 7230中所指定。
在文件上傳的情況下,如果要獲取上傳文件的總大小 ,則應迭代$_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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.