POSTデータを送信
送るものによって色々種類を分ける必要あり
formに何も指定しなかった場合
input type fileで入力したデータのファイルの中身が送信されない。
だからファイルのアップロードには使えない。
application/x-www-form-urlencoded``` という謎のコンテンツタイプが追加されている。 これがformに特に何も指定せずにsubmitした時のデフォルトらしい。 以下に詳細。 [https://zenn.dev/bigen1925/books/introduction-to-web-application-with-python/viewer/post-parameters#application%2Fx-www-form-urlencoded-%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%99%E3%82%8B:title] formでデータを送る時の区切りの文字列の扱いだったり、改行の扱いだったりを定義している。 要は、サーバがちゃんとpostデータの中身なんだなって認識するためのデフォルトの複雑なことが何もない時用の諸々のルール。 ###formのentypeにmultipart/form-dataを指定した場合 試しに送信してみるとbodyがこんな感じになっていた。 [f:id:k0nbuni:20231126181103p:plain] リクエストのヘッダにはこんなものが追加されていた。
multipart/form-data; boundary=----WebKitFormBoundaryK8oEoBaqC4Xlrzay```
boundary、つまりデータとデータの区切りはこの文字列ですよ~というのをヘッダに入れ込んでいる。
こうすることでファイルが始めてアップロードできるようになるらしい。
この構造にすると、たくさんの複雑なデータを持つことが出来る。
一つ上で紹介したデータの送り方だと、ひとつひとつ&とか=で区切るから、あんまり複雑なデータが送れない。
で、ここで言う複雑なデータっていうのがファイルのバイナリ。
バイナリっていうのはファイルをぐっちゃぐちゃな文字列にしたやつ。こいつは人間には理解できないが、コンピュータには理解できる。
コンピュータが読めば、「あ、これはこういうファイルなんだな」となる。