¿Hay alguna manera de obtener el tamaño del cuerpo de la solicitud POST en PHP?Obtener el tamaño de la solicitud POST en PHP
Respuesta
Supongo que está en el $_SERVER['CONTENT_LENGTH']
.
Y si necesita eso para la detección de errores, eche un vistazo a $_FILES['filename']['error']
.
supongo que busca $HTTP_RAW_POST_DATA
Hmm ... Pero no necesita los datos para saber su tamaño, ¿verdad? –
Gracias, pero $ HTTP_RAW_POST_DATA no está disponible con enctype = "multipart/form-data". Necesito usar multipart/form-data para enviar archivos. –
** Advertencia ** Esta característica fue DEPURADA en PHP 5.6.0, y RETIRADA a partir de PHP 7.0.0. [PHP Link] (http://php.net/manual/en/reserved.variables.httprawpostdata.php) –
Si usted está tratando de averiguar si es o no una carga de archivos no, usted debe utilizar el error de manejo de archivo PHP como se muestra en el siguiente enlace. Esta es la forma más confiable para detectar errores de carga de archivos:
http://us3.php.net/manual/en/features.file-upload.errors.php
Si necesita el tamaño de una solicitud POST sin ningún tipo de carga de archivos, usted debería ser capaz de hacerlo con algo como esto:
$request = http_build_query($_POST);
$size = strlen($request);
de lo contrario, si 'solo' quiere tamaño, puede obtenerlo para un archivo usando la matriz $ _FILES => $ _FILES ['nameoffile'] ['size'] – Jakub
Esto podría funcionar:
$bytesInPostRequestBody = strlen(file_get_contents('php://input'));
// This does not count the bytes of the request's headers on its body.
Antes de PHP5.6, esta acción puede borrar la secuencia porque está permitido leerla solo una vez: [docs] (http://php.net/manual/en/wrappers) .php.php). Entonces verá su longitud, pero luego estará vacía – vladkras
tan simple como:
$size = (int) $_SERVER['CONTENT_LENGTH'];
Tenga en cuenta que $ _SERVER ['CONTENT_LENGTH'] solo se establece en las solicitudes HTTP a través del método POST. Este es el valor bruto del encabezado Content-Length. Ver: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
En el caso de la carga de archivos, si desea obtener el tamaño total de los archivos cargados , debe iterar sobre los elementos $ _FILE para resumir cada archivo $ [ 'size']. El tamaño total exacto no coincide con el valor de longitud de contenido sin procesar debido a la sobrecarga de codificación de los datos POST.
También tenga en cuenta que para los errores de archivo , debe verificar el código $ file ['error'] de cada elemento $ _FILES. Por ejemplo, las cargas parciales devolverán el error UPLOAD_ERR_PARTIAL y las cargas vacías devolverán UPLOAD_ERR_NO_FILE. Consulte la documentación de errores de carga de archivos en el manual de PHP.
- 1. Límite de Apache para el tamaño de solicitud POST
- 2. ¿Cómo obtener el cuerpo de un POST en php?
- 3. PHP obtener el cuerpo de la solicitud PUT
- 4. ¿Cómo enviar la solicitud POST?
- 5. ¿Cómo obtener el contenido de solicitud (cuerpo) en PHP?
- 6. solicitud POST en Symfony2
- 7. Modificar solicitud POST en mod_perl2
- 8. Obtener el encabezado de solicitud de "Content-Type" en PHP
- 9. Solicitud POST usando RCurl
- 10. Utilice la solicitud POST en JSfiddle
- 11. PHP: Cómo obtener todo el nombre de la variable en php post method
- 12. Enviar solicitud POST con netcat
- 13. Django jQuery solicitud POST
- 14. Haciendo solicitud HTTP POST
- 15. Django - solicitud POST
- 16. Post inicialización de PHP post
- 17. obtener información del encabezado de php curl post request
- 18. $ .ajax (tipo:. Método POST "POST" a php
- 19. file_get_contents ("php: // input") o $ HTTP_RAW_POST_DATA, ¿cuál es mejor para obtener el cuerpo de la solicitud JSON?
- 20. Obtener datos POST de WebKitNetworkRequest
- 21. Envío de solicitud POST a acción segura
- 22. ¿Cómo iniciar una solicitud GET/POST/PUT/DELETE y el tipo de solicitud de juez en PHP?
- 23. PHP usando en lugar de a la POST
- 24. Obtener la solicitud POST del archivo XML para analizar con Ruby on Rails
- 25. solicitud POST jQuery (no AJAX)
- 26. Node.js: cómo limitar el tamaño de la solicitud HTTP y el tamaño del archivo de carga?
- 27. ¿Cómo puedo obtener la respuesta JSON de una solicitud POST en un WebView?
- 28. Solicitud 'post' método no soportado
- 29. Acceso a valores POST en el objeto de solicitud Symfony2
- 30. Pubsubhubbub en rieles. ¿Cómo extraer el contenido del cuerpo de POST sin procesar de la solicitud de POST?
Estoy cargando archivos de gran tamaño en el servidor junto con otros campos. Pero si lo cancelo, faltará una parte de la solicitud, por lo que debo comparar el tamaño real del cuerpo de la solicitud con el valor del encabezado Content-Length para garantizar que no se cancele la carga del archivo. –
'$ _SERVER ['CONTENT_LENGTH']' por supuesto contiene el valor del encabezado. Creo que es responsabilidad de PHP asegurarse de que cumpla con los datos reales que se reciben. Tal vez '$ _FILES ['file'] ['error']' tiene algunos consejos para ello? –
Si intentas detectar subidas de archivos fallidas, deberías hacerlo como se muestra en mi publicación, sin contar los bytes. –