Kaigi on Rails 2023 動画視聴 HTTPリクエストを手で書いて学ぶ ファイルアップロードの仕組み ①

フィヨルド生がいっぱい登壇しているおかげで、視聴の取っ掛かりが多く、助かる。

HTTPリクエストを手で書いて学ぶ ファイルアップロードの仕組み

  • 「ファイルアップロードは、練習・本番を問わなければ、エンジニア人生の中で一回は実装したことがある機能かな、と思います」 → あったっけ…? パッとは思いつかない。
  • 「とりあえず書いてある通りにしたけど、なんでBase64エンコードしているんだろう?」 → そもそもの Base64 エンコードを知らない。調べてみたところ、a-z, A-Z, 0-9, +, / で計 64 個に変換しているらしい。"abcdefg" が、6 ビットずつに分けられたりパディングされたりして "YWJjZGVmZw==" になる。勉強になった。
  • ファイルの種類に関わらず、処理フローは同じ
  • 結局みんなバイナリ

  • PNG ファイルのバイナリには、先頭に「マジックナンバー」として "89 50 4e 47" とあり、これが、"89" は non-printable だけど、"50 4e 47" は "PNG" となっている。42 Tokyo でやったのと同じかな…?

HTML:

要素 - application/x-www-form-urlencoded - multipart/form-data

↑ どちらも全然分からない。形式、とのこと。 どういう形式かというと、MIME タイプらしい。 Multipurpose Internet Mail Extensions. applicationmultipart が「タイプ」で、x-www-form-urlencodedform-data が「サブタイプ」。 他にも、text/plain, text/html, image/jpeg, application/json などがある。 こう並べられると、image/jpeg はまずまず見かけるような。

application/x-www-form-urlencoded の時は、=& が「制御文字」。 うむ、見通すのもそれなりのメリットはあるのだろうし、クリアしたという達成感が得やすいのだけど、自分にとっては、このように脱線して調べ物をした方が有意義な気がする。