我正在尝试通过Laravel中的Guzzle将文件上传到RESTFUL Api。 我在控制器中完美地获取文件并将其存储在本地,然后再将其发送到api。 但当然,它不想要,我无法弄清楚为什么......
$path = fopen(Config::get('bts.ajaxCall').'temp/' . $filename, 'r');
$params['file'] = [
'name' => 'file',
'contents' => $path,
];
以下是我通过请求发送的参数:
$response = $this->connecter->requestUpload($url, ['file' => $params['file']], [], 'POST', false);
$data = json_decode($response->getBody()->getContents());
这是我的请求函数
public function requestUpload($url, $parameters = [], $headers = [], $requestType = 'POST', $debug = false)
{
$user = Auth::user();
$role = 0;
return $this->client->request($requestType, $url, [
'multipart' => $parameters,
'auth' => (!is_null($user) ? [$user->email, Session::get('api_token')[0]] : null),
'headers' => [
'X-Product' => isset($headers['product_token']) ? $headers['product_token'] : Config::get('bts.product_token'),
'Accept-Language' => isset($headers['language_code']) ? $headers['language_code'] : 'en',
'X-Role' => $role,
'User-Agent' => $_SERVER['HTTP_USER_AGENT'],
'X-Disable-Translation-Id' => true
],
'debug' => $debug,
'decode_content' => false,
]);
}
这是我在转储输入文件时从api获得的响应
object(stdClass)#762 (1) {
["request"]=>
object(stdClass)#760 (0) {
}
}
我已经为我的请求做了很多设置。我跟着guzzle文档,它不起作用,我达到了我的文件参数但空了..我检查了我的fopen和我发送的链接是正确的我得到了我想要的图像。
我对找到解决方案感到绝望。