【发布时间】:2020-12-29 15:52:51
【问题描述】:
我可以像下面这样使用邮递员发送多个文件和字符串数据:
但问题是如何使用 laravel http 发送类似的请求?
我所做的是:
public function performMultiPartRequest($requestUrl, $body)
{
$response = Http::withHeaders(['Accept' => 'application/json']);
$data = [];
foreach ($body as $key => $value) {
if (gettype($value) == 'string') // for string data. works well.
array_push($data,[$key, $value]);
else if (gettype($value) == 'array') { // array of files. doesn't work!
foreach ($value as $file) {
$extension = $file->getClientOriginalExtension();
$response->attach($key , fopen($file, 'r'), mt_rand(100,1000).".".$extension);
}
}
else { // one file. works well.
$extension = $value->getClientOriginalExtension();
$response->attach($key, fopen($value, 'r'), 'temp.'.$extension);
}
}
$response = $response->post($this->baseUri.$requestUrl, $body);
return $response;
}
当我尝试使用一个或多个具有不同键的文件发送一些字符串键值时,没关系,但是当我尝试使用多个文件上传(一个键)发送数据时会发生错误。
错误信息是:
A 'contents' key is required,状态码为 0
【问题讨论】:
-
为了传递多个文件,attach 的第一个参数应该是一个文件名数组,你只是传递一个字符串,即为什么你猜你有这个错误
-
请参阅此问题以了解我在说什么stackoverflow.com/questions/65304647/…
-
@bhucho 我试过你的代码。但我收到类似的错误消息:需要“内容”键
-
@HarpalSingh 很遗憾没有