【问题标题】:Handling file uploads larger than 10mb in PHP在 PHP 中处理大于 10mb 的文件上传
【发布时间】:2012-07-08 14:35:39
【问题描述】:

我有这个表格

<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 的文件?我关于 POST 和 FILE 上传的 php.ini 设置也是这样的

post_max_size = 128M
upload_max_filesize = 128M

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

【问题讨论】:

  • memory_limit?最大执行时间?最大输入时间?没有错误信息?

标签: php file-upload web xampp


【解决方案1】:

您似乎在查看错误的 php.ini,因为默认的 post_max_size 通常为 8M。

重启网络服务器并查看phpInfo()

【讨论】:

    【解决方案2】:

    您可以使用此代码轻松覆盖 PHP 中的 ini。

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

    【讨论】:

      【解决方案3】:

      我想不出比this更好的答案

      我建议您使用每个脚本的 ini_set,因为您不一定希望在整个站点范围内提高执行时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多