Загрузите файл изображения, используя slack API files.upload

Следующий код, кажется, работает, но 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());
}

Когда я использую жрет multipart пост, я получаю ошибку: 'no_file_data' Я чувствую, что что-то упустил.

Есть ли способ загрузить изображения или нетекстовые файлы, используя files.upload метод в Slack API?

1

Решение

Почти сразу после публикации этого вопроса я понял, что неправильно форматировал массив на 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'
]
]
]);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]