文件上传冻结,文件 >= 100MB

文件上传冻结,文件 >= 100MB

所以我有一个网站,您可以在其中上传文件,当您开始上传时,会弹出一个进度条。

如果一次选择的一个文件或一组文件小于 100MB,上传将顺利完成。

如果它们超过 100MB,上传速度将冻结在 0%。

我已经设定

post_max_size = 200G

上传最大文件大小 = 200G

内存限制=4096M

执行中PHP --版本给出以下输出

PHP 8.1.2 (cli)(构建时间:2022 年 7 月 21 日 12:10:37)(NTS) 版权所有 (c) PHP Group Zend Engine v4.1.2,版权所有 (c) Zend Technologies 与 Zend OPcache v8.1.2,版权所有 ( c),Zend Technologies

我用于上传的代码适用于我的 PC 上使用 XAMPP 的任何文件。

对于我的服务器,我使用 RaspberryPI 4。

任何解决此问题的帮助将不胜感激。

还有php代码:

<?php
if(!isset($_SESSION))session_start();
function returnMSG($status, $message){
    $result = array();
    $result['status'] = $status;
    $result['error'] = $message;
    return $result;
}
if(isset($_SESSION['id'])){
    include "data.php";
    $limit = $fileLimit[$_SESSION['role']];
    $currData = 0;
    include "connect.php";
    $conn = connect("upload"); // custom function
    if(!isset($_POST['pF']))$_POST['pF'] = '';
    $parentFolder = $_POST['pF'];
    $result = array();
    for($i = 0;isset($_FILES['files']['name'][$i]); $i++){
        $file_name = $_FILES['files']['name'][$i];
        $file_type = $_FILES['files']['type'][$i];
        $file_tmp_name = $_FILES['files']['tmp_name'][$i];
        $file_error = $_FILES['files']['error'][$i];
        $file_size = $_FILES['files']['size'][$i];
        if($file_size){
            $file_ex = pathinfo($file_name, PATHINFO_EXTENSION);
                
            $file_uploaded_by = $_SESSION['id'];
            $file_ex_lc = strtolower($file_ex);
            $dissalowed_exs = array("php", "hmtl", "js", "css", "asp", "aspx", "swf", "htm", "xhtml", "jhtml");
            if(!in_array($file_ex_lc, $dissalowed_exs)){
                $file_new_name = $file_name.uniqid("-", true);
                $file_path = $file_new_name.".".$file_ex;
                $query = "INSERT INTO `files`(`id`, `name`, `src`, `uploadDate`, `size`, `type`, `downloads`, `uploadedBy`, `deletedOn`, `status`, `parentFolder`,`JSON`) VALUES (NULL,'".$file_name."','".$file_path."','".date("Y-m-d H:i:s")."','".$file_size."','".$file_type."',0,".$file_uploaded_by.", '".date("Y-m-d H:i:s")."', 0, '$parentFolder', '{\"allowed\":[]}');";
                if($conn->query($query)){

                }else{
                    $result[$i] = returnMSG('failed', $conn->error);
                }
                if(move_uploaded_file($file_tmp_name,"../uploads/files/".$file_path)){

                }else{
                    $result[$i] = returnMSG('failed', 'Unable to move file!');
                }
            }else{
                $result[$i] = returnMSG('failed', 'File type not allowed, put the file in an archive and try again!');
            }
        }
    }
}else{
    $result = returnMSG('redirect', 'You are not logged in or the session has expired!');
}
echo json_encode($result);

这是重新发布,因为我无法访问我的其他个人资料。

答案1

添加到 apache2.conf 文件

<Directory **absolute upload folder path**>
        LimitRequestBody 0
</Directory>

相关内容