【问题标题】:How to upload larger files in php upto 50 GB如何在 php 中上传更大的文件到 50 GB
【发布时间】:2020-10-07 13:53:07
【问题描述】:

我必须将 php max 文件上传到 50 GB。服务器有能力,但我对如何完成这项任务感到困惑。

我的第一个问题:是否可以在 php 中一次上传一个 50 GB 的文件?

第二个问题:如果可能的话,有没有办法分块上传文件,所以如果由于某种原因失去连接会更好,这样它就会从剩下的块继续,上传的块将保留在服务器中。

对不起,我在 PHP 方面没有太多经验,也从来没有做过这样的任务。我尝试谷歌但找不到任何解决方案。

谢谢

【问题讨论】:

标签: php file-upload large-files large-file-upload


【解决方案1】:

1.有可能,但这取决于许多因素,例如您的互联网连接(执行超时)、PHP 版本和 PHP 设置。

post_max_size = 0
upload_max_filesize = 0

2.不应该考虑发送这么大的文件而不分块。可以使用 HTTP(不推荐)以外的其他协议和 JS/PHP 来实现。

看看其他答案,因为这个话题被多次提到,并且有很多库可以解决这个问题,即 Upload 1GB files using chunking in PHP

【讨论】:

    【解决方案2】:

    要上传大文件,您可以考虑两件最重要的事情

    • 良好的互联网连接
    • 逐块上传文件

    我使用下面的代码上传一个大于 5MB 的大文件。您可以增加块大小。虽然我不知道你的文件类型。你可以试试。

    /**
     * @param $file
     * @param $fileSize
     * @param $name
     * @return int
     */
    public function chunkUpload($file, $fileSize, $applicantID, $name) {
        
        $targetFile     = 'upload/'. $name;
        $chunkSize      = 256; // chunk in bytes
        $uploadStart    = 0;
    
        $handle = fopen($file, "rb");
        $fp     = fopen($targetFile, 'w');
    
        # Start uploading
        try {
        
            while($uploadStart < $fileSize) {
            
                $contents = fread($handle, $chunkSize);
                fwrite($fp, $contents);
            
                $uploadStart += strlen($contents);
                fseek($handle, $uploadStart);
            }
        
            fclose($handle);
            fclose($fp);
            
            return 200;
            
        } catch (\Exception $e) {
            return 400;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-12-06
      • 2017-11-06
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 2019-08-22
      • 2016-01-04
      • 2012-07-27
      • 1970-01-01
      相关资源
      最近更新 更多