簡単アップロード

multipart/form-data Mozilla/4.7 [ja] (Macintosh; I; PPC)
-----------------------------7989528131691
Content-Disposition: form-data; name="action"

tru
-----------------------------7989528131691
Content-Disposition: form-data; name="name"

maria
-----------------------------7989528131691
Content-Disposition: form-data; name="comment"

testしてま〜す
-----------------------------7989528131691
Content-Disposition: form-data; name="img"; filename="teddy.gif"
Content-Type: image/gif

GIF89a~ ケ ヨヨ売ニニ゙ュュ゙・・ヨ惧ヨ粕ヨ血ホтホ{{ニss゙{{ニkkニccヨkkスZZニZZオRRスRRkkスJJオBBュ99ュ))オ))・!!・ *************************カット**************************************:
>ゥMs瑤agヘキャ糒o界?uPFp0豌0ヨfー惶.^L!ャリ@ ヲlア`^*rOw f`xLレ$NP粒擇>膺
-----------------------------7989528131691--
Content-Disposition: form-data; name="end"

end
-----------------------------7989528131691


multipart/form-data Mozilla/4.0 (compatible; MSIE 5.01; Windows 98)
-----------------------------7d0642dd1c

Content-Disposition: form-data; name="action"



tru

-----------------------------7d0642dd1c

Content-Disposition: form-data; name="name"



warewan

-----------------------------7d0642dd1c

Content-Disposition: form-data; name="comment"



●ネットアイドル Michikoがプロデュース●ガールズサイトG-WebがBIGLOBEに登場●

 インターネットのカリスマアイドルとして話題のMichikoが、この春、BIGLOBEに登

 場。



-----------------------------7d0642dd1c

Content-Disposition: form-data; name="img"; filename="C:\warewan\HP\HP1\amami02\GT.jpg"

Content-Type: image/pjpeg



リ JFIF ,, ロ C  

․.' ",#⠷),01444'9=82<.342ロ C 

2!㈀222222222222222222222222222222222222222222222222タ *a" ト   
*************************カット**************************************:
PEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPル

-----------------------------7d0642dd1c

Content-Disposition: form-data; name="end"



end

-----------------------------7d0642dd1c


MACとWINDOWSの違いは、改行
  • とにかく、データ―を分解しなけければ、使えない
  • $read_data (スカラー)にmultipart/form-dataの全データ―をいれちゃいます。
  • splitを使います。@in = split(/-*\S*\s*Content-Disposition: form-data; name="\w*"/, $read_data);
  • 正規表現で、色の文字によってスカラーを分解し、配列にいれます。
  • $in[3]が、アップロードファイルのデータ―です。これは、別に保存します。
  • $img_name_data = @in [3];
  • 複数のファイルの場合は、@img_name_data = @in [3,4,5,6,7];などと、保存します。
  • 配列の一番最後のデータ―は、ダミーを使用してます。
  • print ”<input type=hidden name=end value=end>¥n”;などです。これは、必要としません。
  • 配列の最初のデータ―も必要としません。
  • shift (@in);か、@in = @in [1,2,3];です。改行処理、タグ処理などは、普通に行ないます。
  • 話しの順序が逆ですが、各データ―のname="action"などの、設定は無視されます。
  • 連想配列は、使用しません。名前などの、書きこみは、$in[1],$in[2],$in[3]で行ないます。
  • アップロードファイルの拡張子を書いてる部分もファイルデータ―には必要ないので、その部分を、カットします。
  • $img_data = $img_name_data; $img_data =~ s/;.*\s*Content-Type:\s*\w+\/*\w+\s+//;
  • MACとWINDOWSの違いは、改行で、\s+で、解決。
  • ファイルの拡張子は、$img_name_dataを、正規表現で、識別します。
  • ファイルの名前は、日時などから、製作します。
  • あとは、openで、新しくファイルを作って終わりです。binmode(OUT); print OUT $img_data;
  • PS MAC IE 4は、Content-Typeの表示が、でたらめでした。
  • どこから、データ―ファイルなのか?もう終わったブラウザです。
Mozilla/4.0 (compatible; MSIE 4.5; Mac_PowerPC; s426718odn)
Content-Disposition: form-data; name="img"; filename="daiba.jpg"
Content-Type: application/x-macbinary

daiba.jpg JPEG8BIM D  K ┻ヨmウヨm mBIN a リ JFIF  H H TPhotoshop 3.0 8BIM