使用Guzzle发送未知数量的文件

时间:2018-09-12 10:49:18

标签: php guzzle

我现在正在使用Guzzle将用户上传的多个文件发送到另一台服务器。

据我了解,我们可以通过以下代码使用Guzzle发送文件:

'multipart' => [
    [
        'name'     => 'FileContents',
        'contents' => file_get_contents($path . $name),
        'filename' => $name
    ],
    [
        'name'     => 'FileInfo',
        'contents' => json_encode($fileinfo)
    ]
],

但是,由于上载的文件数量可能不同,并且上面的代码只能用于发送一个文件。如何使用Guzzle发送未知数量的文件?非常感谢你!

1 个答案:

答案 0 :(得分:0)

这取决于您向其发送请求的服务器。是否可以处理FileContentsFileInfo内部的数组?还是类似FileContents_1FileContents_2FileContents_N的东西?这取决于您的服务器。

无论如何,在Guzzle中,您都可以轻松地用循环填充数组:

$multipart => []
foreach ($files as $file) {
    $multipart[] = [
        'name'     => 'FileContents[]',
        'contents' => fopen($path . $name, 'r'),
        'filename' => $name
    ];
    $multipart[] = [
        'name'     => 'FileInfo[]',
        'contents' => json_encode($fileinfo)
    ]
}

P.S。

另外,最好使用fopen()而不是file_get_contents(),因为您不需要读取脚本中的文件,只需将它们传递给Guzzle。