http通信で画像データをpostする場合のcontent-type指定について


http通信で画像データをpostする方法に関して調べると、どの記事でも`Content-Type: multipart/form-
data`を指定するように書かれています。(もしくは画像バイナリデータをbase64でエンコードしてjson等に含めて送る方法もありますが)

自分の認識では、multipart/form-
dataは複数種類のデータを一度に送る際に指定する認識なんですが、自分が調べた範囲では画像の送信にはmultipart/form-
dataの指定が必須のように扱われていて違和感があります。

実際のところ画像の送信にはmultipart/form-dataの指定が必須なんでしょうか？  
単一の画像であれば、content-typeをimage/pngとかにして画像のバイナリデータ送るとか出来ないのかなと疑問なんですが。




画像に限らずファイルをフォームデータとして送信する場合は、ファイル以外のデータも含まれるので、`multipart/form-
data`を指定する必要があります。ファイル以外はテキストデータですが、ファイルはバイナリデータだからです。

[フォームデータの送信 - ウェブ開発を学ぶ |
MDN](https://developer.mozilla.org/ja/docs/Learn/Forms/Sending_and_retrieving_form_data#%E7%89%B9%E5%88%A5%E3%81%AA%E5%A0%B4%E5%90%88_%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E9%80%81%E4%BF%A1)

> データは複数の部分に分かれ、それぞれのファイルや文字列データがフォーム本体に含められているので、enctype の値を multipart/form-
> data に設定ください。

プログラムでファイルをアップロードする場合は、この限りではありません。

[ウェブアプリケーションからのファイルの使用 - Web API |
MDN](https://developer.mozilla.org/ja/docs/Web/API/File_API/Using_files_from_web_applications#%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E5%87%A6%E7%90%86%E3%82%92%E8%A1%8C%E3%81%86)

> アップロードの MIME タイプは XMLHttpRequest 関数の overrideMimeType()
> を呼び出して設定します。この場合、一般的な MIME タイプを使用しています。用途によっては MIME タイプを設定する必要がない場合もあります。

