使用 slack API files.upload 方法上传图片文件
Upload image file using slack API files.upload method
以下代码似乎有效,但 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());
}
当我使用 guzzle multipart
post 时,出现错误:'no_file_data'
我觉得我错过了什么。
有没有办法在 Slack API 中使用 files.upload
方法上传图片或非文本文件?
几乎在我 post 编辑这个问题时,我意识到我在 guzzle 中 multipart
post 上错误地格式化了数组。
这似乎有效:
$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'
]
]
]);
以下代码似乎有效,但 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());
}
当我使用 guzzle multipart
post 时,出现错误:'no_file_data'
我觉得我错过了什么。
有没有办法在 Slack API 中使用 files.upload
方法上传图片或非文本文件?
几乎在我 post 编辑这个问题时,我意识到我在 guzzle 中 multipart
post 上错误地格式化了数组。
这似乎有效:
$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'
]
]
]);