• 締切済み

画像ファイルの受信

ブラウザのフォームから送られたファイルデータを読み取り、保存するプログラムを作成しています。 socket() bind() listen() accept() を用いてブラウザから届いたマルチパートデータ(以下のような) ヘッダ ~ -----------------------------boundary Content-Disposition: form-data; name="~"; filename="~" Content-Type: text/plain ファイル内容 -----------------------------boundary をrecvして、そこからファイル内容を取り出すという方法を考えていたのですが、画像ファイルを受信するとrecvが途中で止まってしまいます。textファイルでの動作は確認しました。 他の方法でも結構ですので、ブラウザから画像ファイルを受信できる方法を伝授いただけるとありがたいです。

みんなの回答

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

送信が終わっているのに recv してブロックしてるのでしょうか recvの終了はどうやって判定してますか とりあえず受信は別スレッドにしたほうがいいでしょう

kjhgkkk
質問者

補足

解答ありがとうございます。 recvの終了の判定は、recvを一定数バイト(ここでは32バイトでやっています)ずつ行い、実際にrecvしたバイトが32に満たない場合に終了というようにしています。 ちなみに画像を受信した場合Content-Disposition、Content-Typeまでは正常で、ファイル内容の受信でとまってしまっているようです。

関連するQ&A