« [Windows] 巨大なファイルを作成する。 | トップページ | [Linux][Tool] VMware Player で Debian Etch 構築 »

2008年6月 2日 (月)

[Ruby][CGI] ファイルをアップロードする。

Rubyでファイルアップロード機能を実装する機会がありまして、載せておいてみます。

HTML form はこんな感じ↓

<form method="post" enctype="multipart/form-data" action="/app/upload">
    upload<input type="file" name="file"><input type="submit" value="アップロード">
</form>

で、肝心のソースはこちら↓

#!/usr/local/bin/ruby
require "cgi"

cgi = CGI.new
print cgi.header("type" => "text/html", "charset" => "UTF-8")

# ファイル名取得、いろいろ考えるのが面倒だったのでこんな方法↓で。しょぼ。
if cgi['file'].original_filename =~ /\\([^\\]*)$/
  # Windows + IE の場合、ローカルのフルパスで渡されやがるんで...
  filename = $1
else
  # それ以外はたぶんこれでいいはず
  filename = File.basename(cgi['file'].original_filename)
end

open("/home/fager/#{filename}","w") do |fh|
  fh.binmode
  fh.write cgi['file'].read
end
 

あとはやるならファイルサイズチェックとかかな。

|

« [Windows] 巨大なファイルを作成する。 | トップページ | [Linux][Tool] VMware Player で Debian Etch 構築 »

Ruby」カテゴリの記事

CGI」カテゴリの記事

コメント

折角スタッフさんのお手紙も入っていたのに
肝心の商品状態がランク以下では残念過ぎます。
【最短当日発送】遅くとも1~2営業で出荷可能、全国一律送料無料。販売価格はフリーダイヤルにてご相談させてください♪【0601楽天カード分割】プラダ ショルダーバッグ B8348 ブラック サテン ビーズ 新品 スタッズ PRADA

投稿: ロレックス スーパーコピー 比較 java | 2021年7月10日 (土) 20時17分

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: [Ruby][CGI] ファイルをアップロードする。:

« [Windows] 巨大なファイルを作成する。 | トップページ | [Linux][Tool] VMware Player で Debian Etch 構築 »