记Laravel调用Gin接口调用formData上传文件的实现方法

时间:2022-07-27
本文章向大家介绍记Laravel调用Gin接口调用formData上传文件的实现方法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

第一次错误:

[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 返回的资源、或者一个

PsrHttpMessageStreamInterface 的实例。

$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"])
      ]
    ]
  ]
]);

以上就是本文的全部内容,希望对大家的学习有所帮助。