2017-01-23 4 views
1

Der folgende Code scheint zu funktionieren, aber die Slack API speichert die Datei einen Klartext.Bilddatei mit Slack API hochladen files.upload Methode

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()); 
} 

Als ich die multipart Post verputzen verwenden, erhalte ich die Fehlermeldung: 'no_file_data' Ich fühle mich wie ich bin etwas fehlt.

Gibt es eine Möglichkeit zum Hochladen von Bildern oder Nicht-Textdateien mit der files.upload Methode in der Slack-API?

Antwort

1

Fast sobald ich diese Frage gestellt habe, realisierte ich, dass ich das Array falsch auf dem multipart Post in puzzle formatieren.

Dies scheint zu funktionieren:

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