使用Guzzle 6将文件上传到API端点

布拉德

我可以使用Postman将文件上传到API端点。

我正在尝试将其转换为从表单上传文件,使用Laravel上传并使用Guzzle 6发布到端点。

屏幕快照在Postman中的外观(我故意省略了POST URL) 在此处输入图片说明

下面是单击POSTMAN中的“生成代码”链接时所生成的文本:

POST /api/file-submissions HTTP/1.1
Host: strippedhostname.com
Authorization: Basic 340r9iu34ontoeioir
Cache-Control: no-cache
Postman-Token: 6e0c3123-c07c-ce54-8ba1-0a1a402b53f1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="FileContents"; filename=""
Content-Type: 


----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="FileInfo"

{ "name": "_aaaa.txt", "clientNumber": "102425", "type": "Writeoff" }
----WebKitFormBoundary7MA4YWxkTrZu0gW

以下是用于保存文件和其他信息的控制器功能。该文件正确上传,我可以获取文件信息。

我认为我遇到的问题是使用正确的数据设置multipart和headers数组。

public function fileUploadPost(Request $request)
{
    $data_posted = $request->input();
    $endpoint = "/file-submissions";
    $response = array();
    $file = $request->file('filename');
    $name = time() . '_' . $file->getClientOriginalName();
    $path = base_path() .'/public_html/documents/';

    $resource = fopen($file,"r") or die("File upload Problems");

    $file->move($path, $name);

    // { "name": "test_upload.txt", "clientNumber": "102425", "type": "Writeoff" }
    $fileinfo = array(
        'name'          =>  $name,
        'clientNumber'  =>  "102425",
        'type'          =>  'Writeoff',
    );

    $client = new \GuzzleHttp\Client();

    $res = $client->request('POST', $this->base_api . $endpoint, [
        'auth' => [env('API_USERNAME'), env('API_PASSWORD')],
        'multipart' => [
            [
                'name'  =>  $name,
                'FileContents'  => fopen($path . $name, 'r'),
                'contents'      => fopen($path . $name, 'r'),
                'FileInfo'      => json_encode($fileinfo),
                'headers'       =>  [
                    'Content-Type' => 'text/plain',
                    'Content-Disposition'   => 'form-data; name="FileContents"; filename="'. $name .'"',
                ],
                // 'contents' => $resource,
            ]
        ],
    ]);

    if($res->getStatusCode() != 200) exit("Something happened, could not retrieve data");

    $response = json_decode($res->getBody());

    var_dump($response);
    exit();
}

我收到的错误是使用Laravel的调试视图如何显示的屏幕截图:

在此处输入图片说明

革命

您发布数据的方式是错误的,因此接收到的数据格式不正确。

食人狂docs

的值multipart是一个关联数组的数组,每个数组包含以下键值对:

name:(字符串,必填)表单字段名称

contents:(StreamInterface / resource / string,必需)要在form元素中使用的数据。

headers:(数组)与form元素一起使用的自定义标头的可选关联数组。

filename:(字符串)作为部分中的文件名发送的可选字符串。

使用上面列表中的键并设置不必要的标头而不将每个字段分成一个数组将导致发出错误的请求。

$res = $client->request('POST', $this->base_api . $endpoint, [
    'auth'      => [ env('API_USERNAME'), env('API_PASSWORD') ],
    'multipart' => [
        [
            'name'     => 'FileContents',
            'contents' => file_get_contents($path . $name),
            'filename' => $name
        ],
        [
            'name'     => 'FileInfo',
            'contents' => json_encode($fileinfo)
        ]
    ],
]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Guzzle将文件以“多部分”类型上传到GoogleDrive?

来自分类Dev

如何使用OneDrive REST API将文件上传到OneDrive?

来自分类Dev

使用R将CSV文件上传到REST API

来自分类Dev

使用Blobstore API将文件上传到Google云存储

来自分类Dev

使用Postman Raw将文件上传到Box API

来自分类Dev

使用REST API将文件上传到Firebase存储

来自分类Dev

使用Microsoft Graph API将文件上传到SharePoint Online

来自分类Dev

使用R将CSV文件上传到REST API

来自分类Dev

使用 Drive API 和 PHP 将文件上传到 Teamdrives

来自分类Dev

Java将文件上传到api端点

来自分类Dev

使用 files.upload API 将 Excel 上传到 Slack - 文件上传,但已损坏

来自分类Dev

是否可以使用 nativescript 插件 background-http 将图像文件上传到具有以下特征的端点:

来自分类Dev

使用PowerShell将文件上传到SFTP

来自分类Dev

使用 gsutil 将文件上传到 GCP

来自分类Dev

使用Delphi XE6使用Baas将文本文件上传到云

来自分类Dev

使用OneDrive File Picker API将文件上传到默认文件夹

来自分类Dev

Google Drive API:无法使用Node.js将文件上传到根文件夹

来自分类Dev

如何使用Google Drive API和Python将文件上传到特定文件夹?

来自分类Dev

如何使用OneDrive API将文件上传到OneDrive上的共享文件夹中?

来自分类Dev

使用Xcode 6和PHP文件将图像上传到服务器

来自分类Dev

API使用Guzzle返回PNG图片

来自分类Dev

使用Curl和Oauth 2将文件上传到DropBox的DropBox API PUT示例

来自分类Dev

使用PowerShell和OData API将文件上传到SharePoint 2010

来自分类Dev

使用JSON API将文件上传到Google Cloud Storage,错误401未经授权

来自分类Dev

使用Google Apps脚本将文件从Google驱动器上传到外部API

来自分类Dev

如何使用Youtube API将整个文件夹上传到Youtube

来自分类Dev

如何在C中使用Wininet API将文件上传到anonfile?

来自分类Dev

如何使用REST API将文件和附件上传到sobject记录?

来自分类Dev

如何使用uploadType = resumable将文件上传到Google Drive API

Related 相关文章

  1. 1

    如何使用Guzzle将文件以“多部分”类型上传到GoogleDrive?

  2. 2

    如何使用OneDrive REST API将文件上传到OneDrive?

  3. 3

    使用R将CSV文件上传到REST API

  4. 4

    使用Blobstore API将文件上传到Google云存储

  5. 5

    使用Postman Raw将文件上传到Box API

  6. 6

    使用REST API将文件上传到Firebase存储

  7. 7

    使用Microsoft Graph API将文件上传到SharePoint Online

  8. 8

    使用R将CSV文件上传到REST API

  9. 9

    使用 Drive API 和 PHP 将文件上传到 Teamdrives

  10. 10

    Java将文件上传到api端点

  11. 11

    使用 files.upload API 将 Excel 上传到 Slack - 文件上传,但已损坏

  12. 12

    是否可以使用 nativescript 插件 background-http 将图像文件上传到具有以下特征的端点:

  13. 13

    使用PowerShell将文件上传到SFTP

  14. 14

    使用 gsutil 将文件上传到 GCP

  15. 15

    使用Delphi XE6使用Baas将文本文件上传到云

  16. 16

    使用OneDrive File Picker API将文件上传到默认文件夹

  17. 17

    Google Drive API:无法使用Node.js将文件上传到根文件夹

  18. 18

    如何使用Google Drive API和Python将文件上传到特定文件夹?

  19. 19

    如何使用OneDrive API将文件上传到OneDrive上的共享文件夹中?

  20. 20

    使用Xcode 6和PHP文件将图像上传到服务器

  21. 21

    API使用Guzzle返回PNG图片

  22. 22

    使用Curl和Oauth 2将文件上传到DropBox的DropBox API PUT示例

  23. 23

    使用PowerShell和OData API将文件上传到SharePoint 2010

  24. 24

    使用JSON API将文件上传到Google Cloud Storage,错误401未经授权

  25. 25

    使用Google Apps脚本将文件从Google驱动器上传到外部API

  26. 26

    如何使用Youtube API将整个文件夹上传到Youtube

  27. 27

    如何在C中使用Wininet API将文件上传到anonfile?

  28. 28

    如何使用REST API将文件和附件上传到sobject记录?

  29. 29

    如何使用uploadType = resumable将文件上传到Google Drive API

热门标签

归档