2017-01-23 13 views
1

Следующий код, похоже, работает, но Slack API сохраняет файл в виде простого текста.Загрузить файл изображения, используя slack API files.upload метод

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 в API Slack?

ответ

1

Почти сразу после того, как я разместил этот вопрос, я понял, что неправильно форматировал массив на сообщении multipart в guzzle.

Это похоже на работу:

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