簡體   English   中英

在PHP中獲取POST請求的大小

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM