記 Laravel 呼叫 Gin 介面呼叫 formData 上傳檔案

King_Chin發表於2019-12-11

第一次錯誤:
[output] 【c.FormFile error==>】 multipart: NextPart: EOF
file 沒有傳值,或者非預定格式,stream resource
第二次錯誤:

[output] 【c.FormFile error==>】 multipart: NextPart: bufio: buffer full
 header頭不需要 content-type => 'multipart/form-data'

php呼叫參考:

傳送表單檔案

你可以透過使用 multipart 請求引數來傳送表單(表單enctype屬性需要設定 multipart/form-data )檔案, 該引數接收一個包含多個關聯陣列的陣列,每個關聯陣列包含一下鍵名:

  • name: (必須,字串) 對映到表單欄位的名稱。
  • contents: (必須,混合) 提供一個字串,可以是 fopen 返回的資源、或者一個

Psr\Http\Message\StreamInterface 的例項。

$response = $client->request('POST', 'http://post', [
    'multipart' => [
        [
            'name'     => 'field_name',
            'contents' => 'abc'
        ],
        [
            'name'     => 'file_name',
            'contents' => fopen('/path/to/file', 'r')
        ],
        [
            'name'     => 'other_file',
            'contents' => 'hello',
            'filename' => 'filename.txt',
            'headers'  => [
                'X-Foo' => 'this is an extra header to include'
            ]
        ]
    ]
]);

ps:
multipart格式如上,需要注意的是引數如果是陣列,同樣需要重組,不重組就是第三個問題
Invalid resource type: array
修改引數格式為json,畢竟跨語言json xml 才是王道

```
$response = $client->request('POST', 'http://post', [
        'multipart' => [
            [
                'name'     => 'field_name',
                'contents' => json_encode(["abc", "abd"])
            ]
        ]
    ]
]);
本作品採用《CC 協議》,轉載必須註明作者和本文連結
Chiin

相關文章