Node.jsを使ってChatworkに画像をアップロードをする
動機
ChatworkAPIで画像をアップロードしたいときにcurlを使えばサクッとできますが、Node.jsで使いたい場合のケースもあると思います。
ただ、検索してみるとPythonとChatworkAPIの説明は有志ある方があるけれども、Node.jsとChatworkAPIを使っての画像アップロードの方法についての説明が中々ない・・・
という思いをきっかけに書いてみました。
(´-`).。oO(頑張ってアップロードできるコードを書いてみよう・・・)
コードを書く前に確認
- request, fsを使うため、npmにてインストールされていること
サンプルコード
/**
* chatworkにAPI経由で画像をアップロードするテスト(Node.js)
*/
var con = require('./const.js');
var req = require('request');
var fs = require('fs');
var formData = {
'file' : {
'value' : fs.createReadStream('./hogehoge.png'), // アップロードしたいファイルを指定してください
'options' : {
'filename' : 'hogehoge.png', // ファイル名は任意でどうぞ
'Content-Type' : 'image/png' // 画像ファイルに合わせて変更してください
}
},
'message' : 'hogehogeをnode.js使って送るよ!' // 一緒に送信したいメッセージはこちらに。なければ省略可。
};
var options = {
'url' : 'https://api.chatwork.com/v2/rooms/' + con.room_id + '/files',
'formData' : formData,
'headers' : {
'X-ChatWorkToken' : con.token_id,
'Content-Type' : 'multipart/form-data'
}
};
req.post(options, function (error, response, body) {
console.log(body); // 送信後の処理はこちら
});
※room_idとtoken_idは別のjsにmodule.exportsで記載しています
解説
ChatworkAPIリファレンスにあるリクエストボディイメージ(例)ですが、
このフォーム部分の準備をformData変数で行っています。
--------------------------f295b94a5560e2eb
Content-Disposition: form-data; name="file"; filename="hogehoge.png"
Content-Type: image/png
abc012....binarydata....789de
...
--------------------------f295b94a5560e2eb
Content-Disposition: form-data; name="message"
hogehogeをnode.js使って送るよ!
--------------------------f295b94a5560e2eb--
実行した後のチャット画面
以下のようになります。
やった、、、あがった!ε-(´∀`*)ホッ
最後に
例外処理とか色々実装する必要がありますが、ひとまずアップロードするという目標達成のために割愛させて頂いてます。。。
送信ユーザーを別にするなどはまたどこかの機会で。
下記サイト様の内容を参考させて頂きましたm(_ _)m
- Chatwork API ドキュメント:チャットに新しいファイルをアップロード
- ChatWork に画像をアップロード in Python
- Node.js requestモジュールでmultipart/form-dataをPOSTしてファイルアップロード
- node.jsのrequestモジュールを使って別サーバにFileをPOSTする
Author And Source
この問題について(Node.jsを使ってChatworkに画像をアップロードをする), 我々は、より多くの情報をここで見つけました https://qiita.com/y-aramak/items/02462e717e611456ab82著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .