我有一个表格,视频可以上传并发送到远程目的地。我有一个cURL请求,我想'翻译'到PHP使用Guzzle。
到目前为止,我有这个:
public function upload(Request $request)
{
$file = $request->file('file');
$fileName = $file->getClientOriginalName();
$realPath = $file->getRealPath();
$client = new Client();
$response = $client->request('POST', 'http://mydomain.de:8080/spots', [
'multipart' => [
[
'name' => 'spotid',
'country' => 'DE',
'contents' => file_get_contents($realPath),
],
[
'type' => 'video/mp4',
],
],
]);
dd($response);
}
这是我使用的cURL,并希望将其翻译为PHP:
curl -X POST -F 'body={"name":"Test","country":"Deutschland"};type=application/json' -F 'file=@C:\Users\PROD\Downloads\617103.mp4;type= video/mp4 ' http://mydomain.de:8080/spots
所以当我上传视频的时候,我想把这个硬编码的
C:\Users\PROD\Downloads\617103.mp4。
当我运行它时,我得到一个错误:
客户端错误:POST http://mydomain.de:8080/spots
导致400 Bad Request
响应:请求正文无效:需要表单值'body' 客户端错误:
POST http://mydomain.de/spots导致
400 Bad Request`响应:请求正文无效:需要表单值'body'
3条答案
按热度按时间93ze6v8z1#
我会查看Guzzle的
multipart
请求选项。我看到两个问题:body
,令人困惑)。type
Map到headerContent-Type
。从$ man curl
:你也可以通过使用'type ='来告诉curl使用什么Content-Type。
尝试以下操作:
thtygnil2#
multipart
选项时,请确保没有传递content-type
=>application/json
:)multipart
选项。它是一个数组的数组,其中name
是表单字段名称,它的值是POST的表单值。举个例子:lf3rwulv3#
如果php在目标服务器上,则需要
filename
!