我使用流编写了一些代码,这些代码通过多格式帖子将文件发送到另一个网站。所以这是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 字节都可以传输到另一台服务器。