Esiste un modo per ottenere dimensioni del corpo della richiesta POST in PHP?Ottieni la dimensione della richiesta POST in PHP
risposta
La mia ipotesi è, è nel $_SERVER['CONTENT_LENGTH']
.
E se è necessario per il rilevamento degli errori, dare un'occhiata a $_FILES['filename']['error']
.
Credo che si sta cercando $HTTP_RAW_POST_DATA
Hmm ... Ma non hai bisogno dei dati per conoscerne le dimensioni, vero? –
Grazie, ma $ HTTP_RAW_POST_DATA non è disponibile con enctype = "multipart/form-data". Ho bisogno di usare multipart/form-data per inviare file. –
** Warning ** Questa funzione è stata DEPRECATED in PHP 5.6.0 e REMOVED a partire da PHP 7.0.0. [PHP Link] (http://php.net/manual/en/reserved.variables.httprawpostdata.php) –
Se stai cercando di capire se un upload di file non è riuscita, si dovrebbe utilizzare la gestione, come indicato al link qui sotto errore di file PHP. Questo è il modo più affidabile per rilevare gli errori di caricamento file:
http://us3.php.net/manual/en/features.file-upload.errors.php
Se avete bisogno delle dimensioni di una richiesta POST senza alcun upload di file, si dovrebbe essere in grado di farlo con qualcosa di simile:
$request = http_build_query($_POST);
$size = strlen($request);
altrimenti se "solo" vuole la dimensione, puoi ottenerla per un file usando $ _FILES array => $ _FILES ['nameoffile'] ['size'] – Jakub
Questo potrebbe funzionare:
$bytesInPostRequestBody = strlen(file_get_contents('php://input'));
// This does not count the bytes of the request's headers on its body.
Prima di PHP5.6 questa azione può cancellare il flusso perché è consentito leggerlo solo una volta: [docs] (http://php.net/manual/en/wrappers .php.php). Quindi vedrai la sua lunghezza ma poi sarà vuota – vladkras
semplice come:
$size = (int) $_SERVER['CONTENT_LENGTH'];
Si noti che $ _SERVER ['CONTENT_LENGTH'] è impostato solo nelle richieste HTTP tramite il metodo POST. Questo è il valore grezzo dell'intestazione Content-Length. Vedere: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
Nel caso di upload di file, se si vuole ottenere la dimensione totale dei file caricati, si dovrebbe scorrere i $ _File elementi per riassumere ogni $ file [ 'size']. La dimensione totale esatta non corrisponde al valore di Contenuto-Lunghezza non elaborato a causa del sovraccarico di codifica dei dati POST.
Si noti inoltre che per gli errori di file , è necessario controllare il codice $ file ['errore'] di ciascun elemento $ _FILES. Ad esempio, i caricamenti parziali restituiranno l'errore UPLOAD_ERR_PARTIAL e i caricamenti vuoti restituiranno UPLOAD_ERR_NO_FILE. Vedere la documentazione sugli errori di caricamento del file nel manuale PHP.
- 1. PHP: Ottieni corpo della richiesta ricevuta
- 2. Ottieni il corpo della richiesta POST da HttpServletRequest
- 3. Ottieni l'intestazione "Content-Type" della richiesta in PHP
- 4. Ottieni il nome della categoria dall'ID post
- 5. Come inviare la richiesta POST?
- 6. Come ottenere la dimensione in byte della richiesta?
- 7. Ottieni dati post-raw
- 8. PHP GuzzleHttp. Come effettuare la richiesta post con i parametri?
- 9. Ottieni dati POST da WebKitNetworkRequest
- 10. Effettua una richiesta HTTPS tramite PHP e ottieni la risposta
- 11. Come gestire la richiesta POST in node.js
- 12. Ottieni la dimensione del puntatore in C
- 13. Ottieni la dimensione della finestra del terminale (righe/colonne)
- 14. Modifica richiesta POST in mod_perl2
- 15. Ottieni le intestazioni http dalla richiesta corrente in PHP
- 16. AutoLayout di iOS - ottieni la dimensione della cornice larghezza
- 17. Ottieni corpo della richiesta come stringa in Django
- 18. Come posso inviare una richiesta HTTP/2 POST in PHP
- 19. Ottieni la dimensione del sistema RAM
- 20. Guzzle 6, ottieni la stringa di richiesta
- 21. WP - Ottieni post per categoria?
- 22. Ottieni un ID lavoratore/thread/processo/richiesta univoco in PHP
- 23. Invia richiesta POST con netcat
- 24. PHP disk_total_space non misurerà la dimensione della partizione LVM
- 25. Come ottenere il corpo della richiesta di post in Scalatra?
- 26. Ottieni avanzamento download in Node.js con richiesta
- 27. Carica la dimensione massima in PHP?
- 28. Laravel AJAX La richiesta POST è vuota
- 29. Ottieni l'URL della richiesta in un bean JSF?
- 30. Ottieni la dimensione dello stack corrente in FORTH
Sto caricando file di grandi dimensioni sul server insieme ad altri campi. Ma se lo abortisco mancherà una parte della richiesta, quindi devo confrontare la dimensione effettiva del corpo della richiesta con il valore dell'intestazione Content-Length per garantire che il caricamento dei file non sia stato interrotto. –
'$ _SERVER ['CONTENT_LENGTH']' contiene ovviamente il valore dall'intestazione. Penso che sia responsabilità di PHP assicurarsi che sia conforme ai dati effettivi ricevuti. Forse '$ _FILES ['file'] ['error']' ha qualche suggerimento per questo? –
Se stai cercando di rilevare i caricamenti di file falliti, dovresti farlo nel modo in cui viene mostrato nel mio post, senza contare i byte. –