Su MAX_FILE_SIZE
Leggere questo:
... A http://pk.php.net/manual/en/features.file-upload.post-method.php ed equivalenti sedi in altri formati, si afferma che i browser assumono il valore di un campo di modulo in MAX_FILE_SIZE conto.
Queste informazioni si ripete altrove sul web e nei libri, ma sembra provenire dalla documentazione di PHP (è non appare in termini di altre tecnologie lato server).
Non c'è nulla in qualsiasi del codice HTML, HTTP o specifiche relative ad indicare che questo è il caso (in particolare RFC 1867, che ha introdotto il file arrivi in HTML non menzionano, quindi non è anche un caso di un kludge che è stato menzionato nel primo RFC e poi lasciato cadere) e non rende il senso nel contesto delle specifiche HTML (non c'è nulla che indichi alcuna relazione tra quel particolare input nascosto e l'input del file) . Le uniche istruzioni sui campi nascosti che potevo trovare in ognuna di esse erano le avvertenze nelle sezioni sulle considerazioni di sicurezza relative agli agenti utente che basavano qualsiasi operazione relativa ai file su qualsiasi cosa menzionata in un campo nascosto .
Nessun browser sembra eseguire questa "estensione". Infatti dato che ci sono potenzialmente altri significati possibili per un campo nascosto con quel nome in un'applicazione che gestisce diversi caricamenti di file, sarebbe essere considerato un difetto di progettazione qualsiasi ha fatto.
Sottoscrivo che non esiste un tale meccanismo nei browser tradizionali (se esiste uno qualsiasi ) e in effetti non dovrebbe esserlo. Il riferimento ad esso dovrebbe essere lasciato cadere dalla documentazione .
Suggerirei inoltre che poiché questa idea è stata propagata da questa documentazione altrove, una nota su di esso non funzionante deve essere aggiunta a .
Se è necessario o desiderato per più rapidamente la gestione di questo sorta di gestire file di emissione di un meccanismo allora richiede funzionalità per permettere PHP di intercettare i flussi caricato prima della richiesta di completamento, che sarebbe completamente diverso da come questa documentazione suggeriscono si dovrebbe essere trattata, anche se fosse vero ...
il codice qui sotto provengono da implementazione php swfUpload:
// Check post_max_size (http://us3.php.net/manual/en/features.file-upload.php#73762)
$POST_MAX_SIZE = ini_get('post_max_size');
$unit = strtoupper(substr($POST_MAX_SIZE, -1));
$multiplier = ($unit == 'M' ? 1048576 : ($unit == 'K' ? 1024 : ($unit == 'G' ? 1073741824 : 1)));
if ((int)$_SERVER['CONTENT_LENGTH'] > $multiplier*(int)$POST_MAX_SIZE && $POST_MAX_SIZE) {
header("HTTP/1.1 500 Internal Server Error");
echo "POST exceeded maximum allowed size.";
exit(0);
}
// Validate the file size (Warning the largest files supported by this code is 2GB)
$max_file_size_in_bytes = 2147483647;
$file_size = @filesize($_FILES[$upload_name]["tmp_name"]);
if (!$file_size || $file_size > $max_file_size_in_bytes) {
HandleError("File exceeds the maximum allowed size");
exit(0);
}
fonte
2010-05-29 11:52:45
+1; buona investigazione – strager
'è necessario verificare che il file caricato sia inferiore a MAX_FILE_SIZE usando PHP' no, non lo si. Basta sbarazzarsi di questo campo inutile –
"richiede funzionalità per consentire a PHP di intercettare i flussi caricati prima del completamento della richiesta" -> PHP può intercettare la richiesta se la sua lunghezza supera il limite specificato in 'post_max_size', ma richiede al browser di inviare l'intestazione della richiesta contenente 'Content-Length', e dai browser moderni solo Opera sembra che stia inviando questa intestazione. –