質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

3304閲覧

linebotに送信された画像を保存する

akihir

総合スコア39

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2019/05/04 14:48

勉強がてらに
「送信された画像をoutフォルダに保存する」
という内容のlinebotを作成しています。

linebotの全体的な枠組みは以下のサイトをまねています。
https://qiita.com/n0bisuke/items/ceaa09ef8898bee8369d

fs.writeFile()
を用いて画像をoutフォルダに保存しようとしているのですが、うまく反応しません。

単純なことが原因かもしれませんが、作業が進んでいない状況です。
アドバイスをお願いします。

以下は用いているコードであり、★の部分が問題となっているfs.writeFile()です。

JaveScript

1'use strict'; 2//以下のように記述することで以降は「fs」を使ってさまざまなファイル操作のメソッドを使うことができます。 3const fs = require('fs'); 4//require:モジュールを選択する 5//post処理 6const bodyParser = require('body-parser'); 7//ExpressはそのNode.jsでの王道的な開発をスピードアップするためのフレームワーク 8const express = require('express'); 9//使用するlineアプリを選択する 10const line = require('@line/bot-sdk'); 11//使用するport番号を選択する 12const PORT = process.env.PORT || 3000; 13const config = { 14 channelSecret: '適切なものを入力', 15 channelAccessToken: '適切なものを入力' 16}; 17 18//expressを使用してWebアプリケーションなどを作る際、最初に呼び出されるスクリプトファイル。javaなどのmain関数と同じイメージ 19const app = express(); 20 21 22//HTTP通信には、いくつかの仕様が取り決められています。 23//GET, POSTというのは、仕様で取り決められたHTTPメソッドというものの一部です。 24//GETはURLに付加してリクエストします//POSTはBodyに含めてリクエストします。 25//GETはURLに直接付加するので目でパラメータを見ることができます。 26//POSTはBodyに含めるので目で見ることはできません。 27 28 29//expressでpostを受け取る 30app.post('/webhook', line.middleware(config), (req, res) => { 31 console.log(req.body.events); 32 Promise 33 .all(req.body.events.map(handleEvent)) 34 .then((result) => res.json(result)); 35 36}); 37 38const client = new line.Client(config); 39function handleEvent(event) { 40 if (event.type !== 'message' || event.message.type !== 'text') { 41 ★return fs.writeFile("./out/test.jpg",event.message.image); 42 } 43 fs.writeFileSync("./out/test.txt","あいうえお"); 44 //fs.writeFile("./out/test.jpeg",event.image) 45 return client.replyMessage(event.replyToken, { 46 type: 'text', 47 text: event.message.text //実際に返信の言葉を入れる箇所 48 }); 49} 50 51app.listen(PORT); 52console.log(`Server running at ${PORT}`);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mistn

2019/05/05 03:54

「うまく反応しない」では分からないので詳しく説明してください。
akihir

2019/05/05 08:48

分かりにくい質問で申し訳ございませんでした。 正しくは「実行してもフォルダに保存されない」です。 ただ試行錯誤してみたところ、うまくいきそうです。 お手数おかけしました。
guest

回答1

0

自己解決

引数を間違えていました。
参照URLです。
https://garafu.blogspot.com/2017/06/nodejs-write-file.html

投稿2019/05/05 08:49

akihir

総合スコア39

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問