CGI::param(uploadedfile)

CGIのアップロード周りに戻ってきた。

CGI - Common Gateway Interface のリクエストとレスポンスを扱う - perldoc.jp
https://pointoht.ti-da.net/e6805798.html

マルチパートのファイルアップロードの場合、標準入力STDINからreadで全部読み込むと、マルチパートなのでパースが大変。
CGI.pmだと、CGI::paramにinputタグのnameで指定した名前を渡すだけで、パースされた"ファイル"を取得できる。
(ここでいう"ファイル"はファイルネームなのかファイルハンドルなのか謎の存在である。)

inputタグのnameを'uploadedfile'という名前に変えた。
paramにそれを指定すると$fileが返る。
これをprintすると、ファイル名。
しかし、readにファイルハンドルとして$fileを渡すと、ちゃんと機能して、ファイルの内容を読み込める。
そして、ファイル内容を出力した後、最後にrefで$fileが何かを調べる。

test1.txtを選択
test1.txtを選択

test1.txtを選択。
送信すると、

ファイル名を指してるのに、ちゃんと読み込めてる。結局refの$fileはFhと出ててファイルハンドルっぽい。
ファイル名を指してるのに、ちゃんと読み込めてる。結局refの$fileはFhと出ててファイルハンドルっぽい。

ファイル名を指してるのに、ちゃんと読み込めてる。結局refの$fileはFhと出ててファイルハンドルっぽい。

Sample/perl/CGI/param_uploadedfile/src/CGI at master · bg1bgst333/Sample · GitHub