未解決:【Ruby】ブラウザからPOSTで受け取った画像を保存する

やりたいこと
可能な限りスクラッチでのデータの受け取りと保存

やりたくないこと
require 'net/https'
require 'cgi'

ライブラリを読み込まないで、Webブラウザから画像を受け取りたいです。
これは勉強などを目的としていて、セキュアなシステムを目的としていません。

HTML画像投稿フォーム

<form method="POST" action="./save_image.rb" enctype="multipart/form-data">
<input type="file" name="image_file" accept="image/png, image/jpg">
<input type="submit" value="POST">

`enctype="multipart/form-data` に留意します。データをやりとりするための指示です。
これがないと、POSTテキストだけ送受信されます。

POSTデータ

-----------------------------48293723925086650521030035409
Content-Disposition: form-data; name="image_file"; filename="test.jpg"
Content-Type: application/octet-stream

JFIFHHxPhotoshop 3.08BIM?........
....
:
:
-----------------------------48293723925086650521030035409--

filenameとかは取得して、アンカーになってるPOSTデータは破棄して、画像部分(バイナリ)を画像として取得したい。

受け取り

$stdout = File.open("./test.jpg", "wb") #出力先変更, "wb" を指定することでバイナリで保存を明示
datas = STDIN.map{|i| i.chomp}.to_a # POSTデータを配列化
for i in datas
    puts i
end
$stdout = STDOUT   # 元に戻す

できない。

コメント