使用松弛的API files.upload方法上传图像文件

时间:2017-01-23 19:46:46

标签: php laravel file-upload guzzle slack-api

以下代码似乎有效,但Slack API会以纯文本格式保存文件。

protected function upload($file)
{
    $client = $this->guzzle;

    if (!$token) {
        $token = env('SLACK_TOKEN');
    }

    $response = $client->request('POST', env('SLACK_API') . "/files.upload?token=$token", [
        'form_params' => [
            'name' => $file->getFilename(),
            'content' => File::get($file->getRealPath()),
            'filename' => $file->getFilename(),
            'filetype' => 'image',
            'channels' => "#_test",
        ]
    ]);


    return json_decode((string)$response->getBody());
}

当我使用gu multipart帖子时,我收到错误:'no_file_data'我觉得我错过了什么。

有没有办法使用Slack API中的files.upload方法上传图片或非文本文件?

1 个答案:

答案 0 :(得分:1)

几乎在我发布这个问题后,我意识到我在gu {multipart帖子中错误地格式化了数组。

这似乎有效:

$response = $this->guzzle->post(env('SLACK_API') . "/files.upload?token=$token", 
  ['multipart' => 
    [
        [
            'name' => 'filename',
            'contents' => $file->getClientOriginalName()
        ],
        [
            'name' => 'file',
            'contents' => fopen($file,'r')
        ],
        [
            'name' => 'channels',
            'contents' => '#_test'
        ]
    ]
  ]);