> herokuでは読み出しだけという記事を見つけ、
> 実際に画像を保存できませんでした。ファイルシステムに保存というのはまた別の方法があるのでしょうか?
今回のサンプルだと、express が処理を隠蔽してしまっていますが、
Heroku はファイルを保存できない(=再起動すると消えてしまう)だけで、このように /tmp 以下にはファイルを書き込むことが可能です。
上記リポジトリの routes/upload.js の19行目の下に console.log を追加してみると、実際のファイルのパスが見えます。
var uploadFile = req.files.upload;
if (!uploadFile) {
return res.send('No file is uploaded!');
}
console.log(uploadFile); // <= 追加
出力結果
{
domain: null,
_events: {},
size: 115013,
path: '/tmp/4ad3d88c6a6fb7e6a6fa7ae6fb7884b1.png',
type: 'image/png',
...
}
を使う場合は特に意識する必要もないですし、
自分でファイルを保存したい場合は、/tmp 以下にファイルを書きだして、同様の処理をすれば良いです。
今回はサンプルですのでそのままファイルを保存していますが、
画像は海老原さんの言うとおり、なんらかの画像処理ライブラリ(ImageMagick のラッパーなら Heroku で動きます)で、
本当に画像なのかのチェック、サムネイル作成、リサイズなどを組み込んだ方が良いと思います。
以上、なにか参考になれば。
P.S 今回、海老原さんの所で紹介されているAWSの公式SDKを使ってみましたが、最初 Promise スタイルだったのが、いつのまにか Node.js 標準API準拠の