« 結婚指輪なくちゃった...(ToT) | トップページ | 空手の試合 »

2008/09/21

Rubyでファイルのアップロード

稟議決裁書類の管理用WebスクリプトをRubyで作っていたのですが、題名だけで検索できても結局ファイルを探して内容を確認しなくてはならないので不便。
以前紹介したバージョンはこちら

ということで、PDFで取り込んだものを保存できるようにするため、Rubyでファイルをアップロードする機能を実装してみました。
ついでにデータベースのスキーマもちょっといじって、区分や分類を編集できるようにしてますがこれは主題ではないので説明を省略。

で、アップロードするのに必要なフォームを

<form method="post" action="upload.rb" enctype="multipart/form-data">
  アップロードしたいファイル : <input type="FILE" name="file"><br>
  コメント : <input type="text" name="comment" size="40"><br>
  <input type="submit" name="upload" value="アップロードする">
</form>
とすると、これを受け取るスクリプトは下記になります。
require "cgi"

cgi = CGI.new()

file = cgi.params["file"][0]
comment = cgi.params["comment"][0].read

file_name = file.original_filename.split(/(\\|\/)/)[-1]
open(Dir.getwd + "/file/#{file_name}", "w") {|fh|
  fh.binmode
  fh.write file.read
}

このスクリプトで、実行しているディレクトリ下にあるfileフォルダにアップロードされたファイルを保存します。

ここで注意したいのは、送信したコメントを取得するためにreadメソッドを利用するということです。
アップロードするのに合わせて何か付加情報を登録したい場合があると思いますが、multipart/form-dataで送信した場合、通常のフォームデータの受け取り方法ではだめみたいですね。
これがわかるまでには結構時間がかかりました。

で、完成品は下記のサイトで確認できますので、興味のある方は動作テストしてみて下さい。勝手に登録・削除して頂いてかまいませんので、ご自由にどうぞ。

サンプルサイト

また、ソースコードも合わせて公開するので、こちらの方も必要な方はご利用下さい。

「ringi_dev.zip」をダウンロード

以上、備忘のためのメモでした。

*2008/9/22追記

ちょこっと修正したので、更新版を公開します。
「ringi002.zip」をダウンロード

*2008/9/25追記

またまた修正したので、更新版を公開します。主な改良点として、「確認」ボタンを押した時に、インラインフレームでPDFを表示するようにしました。これで、いちいち新しいウィンドウを開かなくても中身の確認ができます。
「ringi003.zip」をダウンロード

|

« 結婚指輪なくちゃった...(ToT) | トップページ | 空手の試合 »

コメント

偽物ロンジン時計
主な経営スーパーコピー:バッグ,財布,腕時計,ファッション小物,ブランド商品
商品の数量は多い、品質はよい、価格は低い、現物写真!
経営方針: 品質を重視、納期も厳守、信用第一は当社の方針です。
┏┓┏━┓  ★★★絶対価値ありで~す
┏┻┻┛□┃┏★★★★┓┏━━━━┓┏━━━━┓┏━━━━┓
┃超人気新作N品登場☆注文を期待歓迎光臨┃
┗◎━━◎┻┻◎━━◎┻┻◎━━◎┻┻◎━━◎┻┻◎━━◎┛

投稿: スーパーコピー財布 | 2021/11/22 01:45

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

トラックバック


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

« 結婚指輪なくちゃった...(ToT) | トップページ | 空手の試合 »