2017-10-14 31 views
0

請問我應該如何發送一個文件上傳到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 
        ] 

       ] 
      ]); 

但是,這並不工作,並在此請求服務器無法找到它的參數。我怎麼了?

回答

0

您應該使用的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' 
     ], 
    ] 
]); 
相關問題