2012-07-08 128 views
1

大我有这种形式文件上传处理超过10MB的PHP

<table class="table"> 
     <div class="error"><?php if(!empty($errors))echo output_errors($errors);?></div> 
     <form action = "upload_music.php" method = "POST" enctype = "multipart/form-data"> 
     <tr> 
      <td>Artist:</td> 
      <td><input type="text" name="artist" value=""></td> 
     </tr> 
     <tr> 
      <td>Track Name:</td> 
      <td><input type="text" name="track_name" value=""></td> 
     </tr><?php print_r($_FILES);?> 
     <tr> 
      <td>Genre:</td> 
      <td> 
      <?php 
       $genres = Genre:: getAllGenre(); 
      ?> 
       <select name = "genre"> 
        <?php 
         for($i = 0 ; $i<count($genres);$i++){ 
         ?> 
         <option value = "<?php echo "{$i}"?>"><?php echo "{$genres[$i]['genre']}";?> </option> 
        <?php } 

        ?> 
       </select> 
      </td> 
     </tr> 
     </tr> 
      <td>Track:</td> 
      <td><input type='file' name='file_path'></td> 
     </tr> 

     <tr> 
      <td>Track Description:</td> 
      <td><textarea name="track_desc" rows ="5"></textarea></td> 
     </tr> 
     <tr> 
      <td><input class="btn btn-success" type="submit" name = "submit" value="Upload"></td> 
     </tr> 
     <form> 
    </table> 

当用户将上传的轨道。每当我上传一个大于7MB的文件时,print_r($_FILES);就会打印一个空数组。但是当我上传一个低于8mb的文件或一个mp3时,print_r($_FILES);会打印一个包含值的数组。

我猜测一些文件没有被$ _FILES读取,因为它们的大小大于8mb?如果是这种情况,我会如何上传大于8MB的文件?也是我与问候发布和上传文件php.ini设置看起来像这样

post_max_size = 128M 
upload_max_filesize = 128M 

,如果你们需要我使用XAMPP的额外信息。

+0

超时警告? – MHowey 2012-07-08 04:42:28

+0

memory_limit?的max_execution_time? max_input_time设置?没有错误信息? – MHowey 2012-07-08 04:45:42

回答

4

看起来你正在寻找错误的php.ini,因为默认post_max_size一般是8M。

重新启动Web服务器,并考虑phpinfo()函数

1

您可以轻松地只覆盖INI在PHP与此代码。

ini_set('memory_limit', '32M'); 
ini_set('post_max_size', '16M'); 
ini_set('upload_max_filesize', '16M'); 
1

我想不出一个更好的答案比this

我会建议使用每个脚本的ini_set因为你不一定要广泛筹集执行时间点。