• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:iis+cgiでmultipart/form-data送信がうまくいかない)

IIS+CGIでmultipart/form-data送信がうまくいかない

このQ&Aのポイント
  • IIS+Perl/CGIに移行して、multipart/form-dataのファイルアップロードがうまくいかない問題が発生しています。
  • 初めてのIIS+Perl/CGIでのWEBサーバ構築で、ファイルアップロードの部分で詰まっています。
  • IIS+Perl/CGI環境でのファイルアップロードのタイムアウト問題について、解決策を教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.1

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); を undef($/); $buffer = <>; に直してみると、どうでしょうか? うろ覚えの記憶ですが、 IIS は Content-Encoding: chunked で返すので、CONTENT_LENGTH はあてにならなかったと思います。 デコードは、マルチパートも含めて自分でやると面倒なので、 CGI.pm とかがお勧めです。

shaman2009
質問者

お礼

結論から言うと、お勧めいただいたcgi.pmを使う事にしました。 ただ、なぜうまく行かないか腑に落ちなかった事が、「IISのCONTENT_LENGTH はあてにならなかったと思います。」という一言により判りスッキリしました。ありがとうございます!! つまりは、送られてくるデータ量より大きい数字がCONTENT_LENGTHに入っているため、その分のデータが送られてくるまで待機状態になっていたという事だったんですね。試しにCONTENT_LENGTH部分を変数ではなく受け取るであろうデータ量よりも小さめの数字にしてみたところ、予想通り、受け取りデータの途中までをブラウザ上に表示できました。

関連するQ&A