PHP 将非常大的多部分文件发送到另一个 Web 服务器



我使用流编写了一些代码,这些代码通过多格式帖子将文件发送到另一个网站。所以这是php服务器代码->另一个Web服务器。我目前无法使用"curl",我仅限于流。

我担心(下面的评论,这里的担忧)是,如果我遇到一个非常大的文件,它可能会耗尽 php Web 服务器上的内存。

当使用指向 url(rest api 端点)的 php 流时,有没有办法使用 PHP 流直接写入请求流? 现在,在将所有内容放在一起后,它会发出一个

file_get_contents(...

所以这里有一段代码,用于创建和发送文件。

    private function getOptionsForMulitPartFile($request, $cred, $file)
    {
        $mimeType = $this->getMimeType($file);
        $contentType = 'Content-Type: multipart/form-data; boundary=' . MULTIPART_BOUNDARY;
        $contentLength = "Content-Length: " . filesize($file->getFilePathAndName());
        $file_contents = $file->readWholeFile(); //<----Concern here, that file maybe too large.
        $data =  "--" . MULTIPART_BOUNDARY . "rn" .
            "Content-Disposition: form-data; name="".FORM_FIELD.""; filename="" . basename($file->getFilePathAndName()) . ""rn" .
            "Content-Type: " . $mimeType . "rnrn" . $file_contents."rn";
        $data  .=  "--". MULTIPART_BOUNDARY . "--rn";
        // set up the request context
        return $this->createOption($request, $cred, $data, $contentType, $contentLength);
    }

在读取大文件时,您可以使用 ob_flush() + stream_copy_to_stream 方法,以便从文件中读取的每个 X 字节都可以传输到另一台服务器。

相关内容

  • 没有找到相关文章