2015-04-24 9 views
5

Ho notato che, a seconda del video che sto caricando, a volte l'intero array $_POST e $_FILES sarà vuoto. Questo è un evento strano ma l'ho trovato in alcuni video. Per motivi di test, i video che stavo utilizzando sono tutti del tipo di file video/mp4.

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 
</head> 
<body> 
<?php 
    var_dump($_POST); 
    var_dump($_FILES); 
?> 
<form method="post" action="" enctype="multipart/form-data"> 

    <input type="file" name="attachment"> 
    <input type="text" name="other"> 
    <button type="submit" class="save" value="Save Changes">Upload that file!</button> 
</form> 

</body> 
</html> 

L'uscita di un buon video è

Array 
(
    [other] => testing string 
) 
Array 
(
    [attachment] => Array 
     (
      [name] => Shasta.mp4 
      [type] => video/mp4 
      [tmp_name] => /private/var/tmp/phpAoDLKi 
      [error] => 0 
      [size] => 4688949 
     ) 

) 

Mentre un cattivo richiesta visualizza le seguenti

Array 
(
) 
Array 
(
) 

Ho modificato il mio php.ini per consentire il caricamento di file in base al formato di 50mb, i file che sto testando sono 4.7mb e 10.2mb. Sono completamente perplesso su quale sia la causa, i nomi dei file video sono Shasta.mp4 (file valido) e Bulova_Watches.mp4 (file non valido).

Se necessario, posso caricare i file su un sito affinché altri possano testarli.

+0

Are sei sicuro che il file danneggiato sia codificato correttamente e non sia corrotto? –

+0

Hai guardato le tue variabili 'max_post_vars' /' max_input_vars'? – Darren

+0

@Darren attualmente non è impostato nulla, li aggiungerò e farò un gioco per vedere se c'è qualche cambiamento nel risultato. Cambiare i max vars avrebbe davvero un effetto su di esso quando sto usando solo 2 input. – Bankzilla

risposta

6

Il problema che si sta affrontando è dovuto al fatto che post_max_size è impostato su 8M come predefinito nel proprio php.ini. Mentre il file è 10.4MB si esegue nel seguente errore:

POST Content-Length of 10237675 bytes exceeds the limit of 8388608 bytes in Unknown

Perché hai raggiunto tale limite. Il trucco per risolvere questo problema è semplicemente aumentare tale limite modificando il valore. Potresti semplicemente cambiarlo direttamente nel tuo file php.ini in qualsiasi modo desideri, ovvero 20M.

Oppure si potrebbe impostare tramite il file .htaccess con:

php_value post_max_size 20M 
php_value upload_max_filesize 20M 

Nota: Ho anche aggiunto la richiesta upload_max_filesize che si richiedono per i file più grandi :)