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

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

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

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Node.js

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

Q&A

0回答

1890閲覧

node.js+herokuでファイルをローカルにダウンロードさせたい

nasymt_

総合スコア6

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Node.js

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

0グッド

0クリップ

投稿2017/04/18 08:10

node.js + herokuの構成でwebアプリを作っており、アプリ側で生成したファイルをダウンロードしたいのですが、うまくできません。
ローカル上で実行した場合はダウンロードできるのですが、heroku上では全く反応がなく、うまくいきません。エラー文も出ず無反応です。

そもそもやり方が間違えているような気がしますが、何かいい方法はありませんでしょうか?
下のコードには書いてませんが、ファイルを生成する処理は既に完成しているので、node.js+herokuの構成はなるべく崩したくありません。
よろしくお願いいたします。

###app.js (node.js)

var port = process.env.PORT || 5000, http = require("http"), express = require("express"), app = express(), server = http.createServer(app), io = require('socket.io').listen(server), fs = require('fs'); app.use(express.static(__dirname + "/html/")) server.listen(port); console.log("http server listening on %d", port); //--------------------------------------------------- // socket.io //--------------------------------------------------- io.sockets.on('connection', function(socket) { socket.on("emit_download", function(data) { var _http = require('http'); var request = _http.get("https://xxxxx.herokuapp.com/img/file.jpg",function(response) { socket.emit('file_status', 'begin download function'); if (response.statusCode === 200) { socket.emit('file_status', 'try download'); var file = fs.createWriteStream("test.jpg"); response.pipe(file); socket.emit('file_status', 'download completed'); } request.setTimeout(8000, function() { request.abort(); }); }) }) })

###index.html

<!DOCTYPE html> <html lang="ja"> <head> <meta charset=UTF-8 /> <title>Untitled Document</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script> <script src="/socket.io/socket.io.js"></script> <script type="text/javascript" src="js/main.js"></script> </head> <body> <div id="download" style="background-color:#F00;">download</div> </body> </html>

###main.js

$(document).ready(function() { console.log("main"); var socket = io.connect("https://xxxxx.herokuapp.com/"); var elDownload = document.getElementById('download'); $('#download').on('click', function() { console.log("download"); socket.emit('emit_download', "test"); }) })

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

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

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

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

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

tbn.sh

2017/04/19 04:41

ローカルファイルの生成はどうやっていますか?同一のweb dyno内に生成出来ていますか?問題の切り分けとして、ファイル取得以外の文字列取得等は正常に動作していますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問