PHP无法下载完整文件

时间:2017-01-26 10:57:50

标签: php large-files

我使用以下脚本下载大文件(从600mb到大约2gb),但下载30-40mb后PHP停止。我在我的主机上使用1gbps的网络连接运行这个,所以没有问题。

<?php
if(isset($_POST['submit'])){
    $file_source = $_POST['url'];
    $file_target = $_POST['name'];
    set_time_limit(0);
    $rh = fopen($file_source, 'rb');
    $wh = fopen($file_target, 'w+b');
    if (!$rh || !$wh) {
        return false;
    }

    while (!feof($rh)) {
        if (fwrite($wh, fread($rh, 4096)) === FALSE) {
            return false;
        }
        echo ' ';
        flush();
    }

    fclose($rh);
    fclose($wh);

    return true;
}
?>


<form method="post">
    NAME : <input type="text" name="name" required><br><br>
    URL : <input type="text" name="url" required><br><br>
    <input type="submit" name="submit" value="submit">
</form>**strong text**

2 个答案:

答案 0 :(得分:1)

您可能需要在AppendAllText文件中设置upload_max_filesizepost_max_size的值:

php.ini

More about php ini directives

由于apache对POST大小的限制(2gb),无法使用大于2gb的文件 http://httpd.apache.org/docs/current/mod/core.html#limitrequestbody

答案 1 :(得分:-1)

看看这是否有帮助......

<?php
if(isset($_POST['submit']))
{
    $file_source = $_POST['url'];
    $file_target = $_POST['name'];
    set_time_limit(0);

    file_put_contents( $file_target, fopen( $file_source, 'r' ) );

}
?>


<form method="post">
    NAME : <input type="text" name="name" required><br><br>
    URL : <input type="text" name="url" required><br><br>
    <input type="submit" name="submit" value="submit">
</form>**strong text**