やりたいこと
phpでフォームで入力されたテキスト及びアップロードされた画像をslackに投稿したい。
やってみたこと
php
1<?php 2 3if ($_SERVER['REQUEST_METHOD'] === 'POST') { 4 $tempfile = $_FILES['fname']['tmp_name']; 5 $filename = $_FILES['fname']['name']; 6 7 if (is_uploaded_file($tempfile)) { 8 if (move_uploaded_file($tempfile, $filename)) { 9 $image = "https://" . $_SERVER['SERVER_NAME'] . dirname($_SERVER['SCRIPT_NAME']) . "/" . $filename; 10 } else { 11 echo "ファイルをアップロードできません"; 12 } 13 } else { 14 echo "ファイルが選択されていません"; 15 } 16 17 $url = "https://hooks.slack.com/services/xxxxxx"; 18 19 $message = array( 20 "text" => $_POST['text'], 21 "attachments" => [ 22 "image_url" => $image 23 ] 24 ); 25 26 $message_json = json_encode($message); 27 $message_post = "payload=" . urlencode($message_json); 28 29 $ch = curl_init(); 30 curl_setopt($ch, CURLOPT_URL, $url); 31 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 32 curl_setopt($ch, CURLOPT_POST, true); 33 curl_setopt($ch, CURLOPT_POSTFIELDS, $message_post); 34 curl_exec($ch); 35 curl_close($ch); 36 37} 38?> 39<!DOCTYPE html> 40<html> 41<meta charset="utf-8"> 42<head> 43</head> 44<body> 45<form method="post" action="" enctype="multipart/form-data"> 46 <div><textarea name="text"></textarea></div> 47 <div><input type="submit" value="投稿"></div> 48 <div><input type="file" name="fname"></div> 49</form> 50</body> 51</html>
現状の結果
- テキストのみslackに投稿される。
- 画像ファイルはサーバにアップロードされている。
attachmentsの指定がおかしいのでしょうか。ご教示いただけますと幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。