我应该如何发送文件到lazzle中的api服务器由Guzzle客户端

问题描述:

请问我应该如何发送一个文件上传到api上?我应该如何发送文件到lazzle中的api服务器由Guzzle客户端

在API服务器,我们有一个POST方法,它给出了两个参数:查询 一个nameformData一个文件,那么它提供了一个链接作为响应体。 我要通过客户端狂饮这种格式发送文件:

$file = $request->file('InputFile'); 
$file_path = $file->getPathname(); 
$response = $this->CX_Client->post('/file/upload?name='.$fileName, [ 
       'formData' => 
       [ 
        'file' => 
        [ 
          'name'  => 'InputFile', 
          'contents' => fopen($file_path, 'r'), 
          'filename' => $fileName 
        ] 

       ] 
      ]); 

但是,这并不工作,并在此请求服务器无法找到它的参数。我怎么了?

您应该使用的multipart代替formData

https://guzzle.readthedocs.io/en/latest/request-options.html#multipart

$response = $this->CX_Client->post('/file/upload?name='.$fileName, [ 
    'multipart' => [ 
     [ 
      'name'  => 'foo', 
      'contents' => 'data', 
      'headers' => ['X-Baz' => 'bar'] 
     ], 
     [ 
      'name'  => 'baz', 
      'contents' => fopen('/path/to/file', 'r') 
     ], 
     [ 
      'name'  => 'qux', 
      'contents' => fopen('/path/to/file', 'r'), 
      'filename' => 'custom_filename.txt' 
     ], 
    ] 
]);