我现在正在使用Guzzle将用户上传的多个文件发送到另一台服务器。
据我了解,我们可以通过以下代码使用Guzzle发送文件:
'multipart' => [
[
'name' => 'FileContents',
'contents' => file_get_contents($path . $name),
'filename' => $name
],
[
'name' => 'FileInfo',
'contents' => json_encode($fileinfo)
]
],
但是,由于上载的文件数量可能不同,并且上面的代码只能用于发送一个文件。如何使用Guzzle发送未知数量的文件?非常感谢你!
答案 0 :(得分:0)
这取决于您向其发送请求的服务器。是否可以处理FileContents
和FileInfo
内部的数组?还是类似FileContents_1
,FileContents_2
,FileContents_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。