Next.js 勉強会 のお題アプリの参考実装です。
- まず、お題のアプリを自分で作ってみる
- この参考実装を起動してみて、作ったものと比較してみる
- 参考実装か、自分で作ったものに対して改善を加えてみる
node v14.10.0
で作ったが、その辺のバージョンなら大体動くと思われる- npm scripts で起動する
# devサーバの起動 npm run dev
- すぐ使えそうなテンプレがないか調べる ->
create-next-app
とwith-typescript
が見つかる - 使えそうなところを利用して実装する:
User
->File
に変換し、いらないものを削る - それっぽい ダウンロード / アップロード のサンプルを真似して実装する
- ファイルストレージ (
_uploaded_files
) とのグルーコードを書く
- NextJS: Simple Upload file to server - CodeSandbox
- node.js - How to download a file on Next.js using an API route - Stack Overflow
- フッター・ヘッダーを凝ったものにする
- ファイルのアップロード成功・失敗を画面に表示する
- アップロード先ディレクトリを、汎用の一時ディレクトリにする
fs
をfs/promises
に置換する- 特定のファイルをアップロードすることで、アプリケーションに DOS 攻撃をする / このパスの攻撃を緩和する
- ファイルストレージへのアクセスに排他制御を入れる
material-ui
を入れて見た目を綺麗にするFile
を一度にたくさん受け取れるようにする
- ファイルストレージをインメモリストア(
Redis
)やデータベース(SQLite
)に換装する - ファイルのプレビュー機能をつける
- ファイルアップロード時にウイルスチェックを入れる
- 特殊なファイルを作って、Next.js の実行サーバに侵入する