在PHP中获取POST请求的大小

时间:2009-09-01 09:21:23

标签: php post size

有没有办法在PHP中获取POST请求主体的大小?

5 个答案:

答案 0 :(得分:35)

简单如下:

$size = (int) $_SERVER['CONTENT_LENGTH'];

请注意,$_SERVER['CONTENT_LENGTH']仅在HTTP请求方法为POST(非GET)时设置。这是RFC 7230中指定的Content-Length标头的原始值。

如果是文件上传,如果您想获得上传文件的总大小,则应迭代$_FILE数组以对每个$file['size']求和。由于POST数据的编码开销,确切的总大小可能与原始Content-Length值不匹配。 (另请注意,您应使用每个$file['error']元素的$_FILES代码检查上传错误,例如UPLOAD_ERR_PARTIAL用于部分上传,UPLOAD_ERR_NO_FILE用于空上传。请参阅{{3 PHP手册中的文档。)

答案 1 :(得分:5)

我的猜测是,它位于$_SERVER['CONTENT_LENGTH']

如果您需要进行错误检测,请查看$_FILES['filename']['error']

答案 2 :(得分:4)

如果您要确定文件上传是否失败,您应该使用PHP文件错误处理,如下面的链接所示。这是检测文件上传错误的最可靠方法:
 http://us3.php.net/manual/en/features.file-upload.errors.php

如果您需要没有任何文件上传的POST请求的大小,您应该可以这样做:

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

答案 3 :(得分:2)

这可能有效:

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

答案 4 :(得分:0)

我猜您正在寻找$HTTP_RAW_POST_DATA