<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Quilva::ReJEC.NET BLOG &#187; Ruby</title>
	<atom:link href="http://www.quilva.jp/blog/category/linuxunix/ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.quilva.jp/blog</link>
	<description>Quilva の雑記帳</description>
	<lastBuildDate>Sat, 15 Oct 2011 11:15:36 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Ruby::cgi で multipart 送信のときのフォームの値の取得方法</title>
		<link>http://www.quilva.jp/blog/2009/07/19/rubycgi-%e3%81%a7-multipart-%e9%80%81%e4%bf%a1%e3%81%ae%e3%81%a8%e3%81%8d%e3%81%ae%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a0%e3%81%ae%e5%80%a4%e3%81%ae%e5%8f%96%e5%be%97%e6%96%b9%e6%b3%95/</link>
		<comments>http://www.quilva.jp/blog/2009/07/19/rubycgi-%e3%81%a7-multipart-%e9%80%81%e4%bf%a1%e3%81%ae%e3%81%a8%e3%81%8d%e3%81%ae%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a0%e3%81%ae%e5%80%a4%e3%81%ae%e5%8f%96%e5%be%97%e6%96%b9%e6%b3%95/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 09:56:36 +0000</pubDate>
		<dc:creator>Quilva</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.quilva.jp/blog/?p=377</guid>
		<description><![CDATA[久々にハマった。デバッグに数十分もかかってしまった。 後から思えば簡単なことなのになんで気が付かないんだろ。 たとえば、以下のようなファイルをアップロードする CGI を作ろうとすると、コードは多分こんなかんじになる。 #!/usr/bin/ruby require 'cgi' cgi = CGI.new filename = "" text = "" if cgi.has_key?("upload") filename = cgi['file'].original_filename text = cgi['text'] end puts &#60;&#60;EOM &#60;form action="KORE.rb" method="POST" enctype="multipart/form-data"&#62; &#60;input type="file"   name="file" /&#62; &#60;input type="text"    name="aaaa"  /&#62; &#60;input type="submit" name="upload" value="送信" /&#62; &#60;/form&#62; &#60;p&#62; #{CGI.escapeHTML(filename)}&#60;br /&#62; #{CGI.escapeHTML(aaaa)} &#60;/p&#62; EOM ソースどおりですが、アップロードしたファイル名とテキストボックスのデータを &#60;p&#62; のところに表示させる、という [...]]]></description>
			<content:encoded><![CDATA[<p>久々にハマった。デバッグに数十分もかかってしまった。</p>
<p>後から思えば簡単なことなのになんで気が付かないんだろ。</p>
<p>たとえば、以下のようなファイルをアップロードする CGI を作ろうとすると、コードは多分こんなかんじになる。</p>
<pre>#!/usr/bin/ruby

require 'cgi'

cgi = CGI.new
filename = ""
text = ""
if cgi.has_key?("upload")
  filename = cgi['file'].original_filename
  text = cgi['text']
end

puts &lt;&lt;EOM
&lt;form action="KORE.rb" method="POST" enctype="multipart/form-data"&gt;
 &lt;input type="file"   name="file" /&gt;
 &lt;input type="text"    name="aaaa"  /&gt;
 &lt;input type="submit" name="upload" value="送信" /&gt;
&lt;/form&gt;

&lt;p&gt;
#{CGI.escapeHTML(filename)}&lt;br /&gt;
#{CGI.escapeHTML(aaaa)}
&lt;/p&gt;
EOM</pre>
<p>ソースどおりですが、アップロードしたファイル名とテキストボックスのデータを &lt;p&gt; のところに表示させる、という CGI です。<br />
ところが、これは希望通りに動作しません。</p>
<p>具体的にはテキストボックスのデータ表示が「<strong>#&lt;String…</strong>」のように OBJ.class の値しかかえってきません。<br />
これは multipart で送信しているからなので、以下のようにしないといけない。multipart でなければ上のソースで OK 。</p>
<pre>#!/usr/bin/ruby

require 'cgi'

cgi = CGI.new
filename = ""
text = ""
if cgi.has_key?("upload")
  filename = cgi['file'].original_filename
  text = cgi['text']<strong>.read</strong>
end

puts &lt;&lt;EOM
&lt;form action="KORE.rb" enctype="multipart/form-data" method="POST"&gt;
 &lt;input name="file" type="file" /&gt;
 &lt;input name="aaaa" type="text" /&gt;
 &lt;input name="upload" type="submit" value="送信" /&gt;
&lt;/form&gt;

&lt;p&gt;
#{CGI.escapeHTML(filename)}&lt;br /&gt;
#{CGI.escapeHTML(aaaa)}
&lt;/p&gt;
EOM</pre>
<p>はい、<strong>read</strong> を付けるだけです。リファレンスいいかげんにしか見てないからこんなことになるんでしょうね…。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.quilva.jp/blog/2009/07/19/rubycgi-%e3%81%a7-multipart-%e9%80%81%e4%bf%a1%e3%81%ae%e3%81%a8%e3%81%8d%e3%81%ae%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a0%e3%81%ae%e5%80%a4%e3%81%ae%e5%8f%96%e5%be%97%e6%96%b9%e6%b3%95/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

