2017-10-14 2 views
0

Können Sie mir bitte sagen, wie ich eine Datei senden soll, um auf API zu laden?Wie soll ich eine Datei an api-Server in Laravel von Guzzle Client senden

In api-Server haben wir eine post-Methode, die es gibt zwei Parameter: ein name in Abfrage und eine Datei in formData dann gibt es einen Link als Antwort Körper. Ich werde Datei über guzzle Client in diesem Format senden:

$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 
        ] 

       ] 
      ]); 

Aber das funktioniert nicht und Server kann seine Parameter nicht in diesem Antrag finden. Was ist falsch mit mir?

Antwort

0

sollten Sie multipart anstelle von 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' 
     ], 
    ] 
]);