2017-01-23 68 views
1

以下代碼似乎可行,但Slack API將文件保存爲純文本。使用slack API文件上傳圖像文件.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'我覺得我失去了一些東西。

有沒有一種方法可以在Slack API中使用files.upload方法上傳圖像或非文本文件?

回答

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